08.07.2008, 14:39 | #1 |
Участник
|
Есть такая форма 7139(Бюджет Продаж Обзор), когда мы выбираем Показывать в Строках, допустим Товар, То у нас вываливаеться список всех товаров!!!! Как мне наложить фильтр, чтобы вываливася писок товаров, которые указаны в Таблице 7134(поле ТОВАР НОМЕР)?????
Я так понимаю, что пре выборе Товар, идет обновления Формы, и происходит поиск всех товаров по событию OnFindRecord и OnNExtRecord, которые в свою очередь оброшаются в кодеюнит: 7130.. в функции FindRec и соответственно NextRec... теперь как быть дальше???? что нужно ???? |
|
08.07.2008, 14:57 | #2 |
Участник
|
Ну это вам надо править функции кодьюнита Item Budget Management чтобы они фильтровали только то что есть в вашем бюджете.
__________________
Want to believe... |
|
08.07.2008, 15:20 | #3 |
Участник
|
Не могу понять каким здесь можно образом сделать фильтр на таблицу Item:
FINDREC: Код: DimOption::Item: BEGIN Item."No." := DimCodeBuf.Code; IF ItemFilter <> '' THEN Item.SETFILTER("No.",ItemFilter); Found := Item.FIND(Which); IF Found THEN CopyItemToBuf(Item,DimCodeBuf); END; Код: DimOption::Item: BEGIN Item."No." := DimCodeBuf.Code; IF ItemFilter <> '' THEN Item.SETFILTER("No.",ItemFilter); ResultSteps := Item.NEXT(Steps); IF ResultSteps <> 0 THEN CopyItemToBuf(Item,DimCodeBuf); END; |
|
08.07.2008, 17:44 | #4 |
Участник
|
Придется формировать временную таблицу Item на основе записей в 7134 и на Find и Next тащить записи из нее.
|
|
08.07.2008, 22:33 | #5 |
Участник
|
можно сделать аналог функции copyItemtoBuf назвать например CopyItemBudgetToBuf в которой уже пробегать по строчкам бюджета и вставлять соответвующие записи в буфер.
__________________
Want to believe... |
|
09.07.2008, 12:03 | #6 |
Участник
|
DA_NEAL, не могу реализовать...
Что не правильно? Код: WITH DimCodeBuf DO BEGIN INIT; IF ItemBudgetEntry.FIND('-') THEN REPEAT IF ItemBudgetEntry."Item No." = Item."No." THEN BEGIN Code := Item."No."; Name := Item.Description; END; UNTIL ItemBudgetEntry.NEXT =0; END; |
|
09.07.2008, 14:28 | #7 |
Участник
|
Тут похитрее надо как то похоже . И не в этом месте.
__________________
Want to believe... |
|
09.07.2008, 15:03 | #8 |
Участник
|
как и сказал rmv думаю надо сделать следующее:
1. Завести глобальную переменную tmpItem в кодюните Item Budget Management 2. В одной из функций вызываемых из формы (думаю ItemBudgetManagement.ValidateLineDimCode и возможно на BudgetNameSelection) встроить код который по вашей логике пробегается по ItemBudgetEntry и вставляет записи в таблицу tmpItem. 3. в функция FindRec и NextRec заменить переменную Item в коде на tmpItem FindRec DimOption::Item: BEGIN tmpItem."No." := DimCodeBuf.Code; IF ItemFilter <> '' THEN tmpItem.SETFILTER("No.",ItemFilter); Found := tmpItem.FIND(Which); IF Found THEN CopyItemToBuf(tmpItem,DimCodeBuf); END; NextRec DimOption::Item: BEGIN tmpItem."No." := DimCodeBuf.Code; IF ItemFilter <> '' THEN tmpItem.SETFILTER("No.",ItemFilter); ResultSteps := tmpItem.NEXT(Steps); IF ResultSteps <> 0 THEN CopyItemToBuf(tmpItem,DimCodeBuf) END;
__________________
Want to believe... |
|
16.07.2008, 14:11 | #9 |
Участник
|
пишу в ItemBudgetManagement.ValidateLineDimCode:
tmpItem.DELETEALL; IF LineDimOption=LineDimOption::Item THEN BEGIN ItemBudgetEntry.SETFILTER("Budget Name",ItemBudgetName.Name); IF ItemBudgetEntry.FIND('-') THEN REPEAT Item.SETFILTER("No.",ItemBudgetEntry."Item No."); IF Item.FIND('-') THEN BEGIN tmpItem:=Item; tmpItem.INSERT; END; UNTIL ItemBudgetEntry.NEXT=0; END; говорит, что Товар Номер такой уже существует! |
|
16.07.2008, 14:28 | #10 |
Участник
|
а причем тут табличка Item если мы вставляем в tmpItem Не надо так делать TmpItem = Item.
Вот код попроще: IF LineDimOption = LineDimOption::Item THEN BEGIN ItemBudgetEntry.RESET; IF ItemBudgetEntry.FINDFIRST THEN REPEAT Item.GET(ItemBudgetEntry."Item No."); tmpItem."No." := ItemBudgetEntry."Item No."; tmpItem.Description := Item.Description; IF tmpItem.INSERT THEN; UNTIL ItemBudgetEntry.NEXT = 0; END;
__________________
Want to believe... |
|