02.10.2004, 16:48 | #1 |
Участник
|
как в датапорте обработке импорта записи эту запись "удвоить" (скопировать) и добавить обе записи?
поясню. таблица "Фин. Журнал Строка". (бухгалтерия) и файл структуры "дата; сумма". грубо говоря, это расходники. мне нужно импорировать, попутно для каждого расходника создавая "почти копию" т.е. приходник с amount = "-сумма". как, в каком триггере это можно сделать? неплохо бы поглядеть на пример реализации. спасибо.
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали |
|
04.10.2004, 10:18 | #2 |
Moderator
|
В триггере OnBeforeImportRecord()
ЗЫ Что-то недоброе вы задумали... |
|
04.10.2004, 16:17 | #3 |
Участник
|
да нет, ничего там "недоброго" нет. я еще пока не злой...
просто есть структура данных, по которой нужно провести сразу 2 операции - поступление денег из филиала и передача в банк. данные лежат в БД. отсюда есть выбор - "раздвоить" либо при генерации файла (простейший запрос с union'ом - что лично для меня проще), либо же средствами навижн при импорте (что для меня сложнее, но, видимо, полезнее, а потому привлекательнее). недостаток первого способа: придется дважды (под каждую из "парных" записей) выполнять ряд команд, в то время, как при втором способе мы на этом немножечко сЪэкономим... где б еще примерчик кода (добавление записи) раздобыть?..
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали |
|
04.10.2004, 16:28 | #4 |
Moderator
|
Объявляется переменная Var1 типа Record "Фин. Журнал Строка".
В триггере OnAfterImportRecord переменной Var1 присваивается запись датаайтема, типа Var1 := "Фин. Журнал Строка"; потом в полях Var1 делаются необходимые изменения и VALIDATE, а потом Var1.INSERT |
|
04.10.2004, 16:37 | #5 |
Участник
|
Могу предложить код, которым я копировал строки Sales Line (делал из Заказа Счет). Можно несильно переделать под Ваши функции.
_Locals_ Name DataType Subtype Length LineNo Integer FieldRef FieldRef RecRef1 RecordRef RecRef2 RecordRef mxLineNo Integer mxItemCount Integer rItem Record Item rResEntry Record Reservation Entry rResEntryLineNo Integer _Globals_ Name DataType Subtype Length ContNo Code 20 FromContainer Record Container PurchaseLine Record Purchase Line CurrVendor Code 20 OldVendor Code 20 NewPurchaseLine Record Purchase Line NewPurchaseHeader Record Purchase Header PurchSetup Record Purchases & Payables Setup Fld Record Field Mess Text 100 Window Dialog _Code_ ... Fld.SETRANGE(TableNo, 39); ... IF Fld.FIND('-') THEN BEGIN NewPurchaseLine.INIT; NewPurchaseLine.BlockDynamicTracking(TRUE); REPEAT CASE Fld.FieldName OF 'Document Type': NewPurchaseLine."Document Type":= NewPurchaseLine."Document Type"::Invoice; 'Line No.': BEGIN LineNo := LineNo + 10000; NewPurchaseLine."Line No.":= LineNo; END; 'Document No.': NewPurchaseLine."Document No.":= NewPurchaseHeader."No."; ELSE RecRef1.GETTABLE(PurchaseLine); RecRef2.GETTABLE(NewPurchaseLine); FieldRef:= RecRef2.FIELD(Fld."No."); FieldRef.VALUE(RecRef1.FIELD(Fld."No.").VALUE); RecRef2.SETTABLE(NewPurchaseLine); END; UNTIL Fld.NEXT=0; NewPurchaseLine.INSERT; ... END; Хотя, если как посоветовал Dzemon , то вроде короче получается
__________________
С уваженем, rootadmin |
|
04.10.2004, 16:58 | #6 |
Участник
|
Спасибо большое!!!
Все понятно.
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали |
|
05.10.2004, 10:46 | #7 |
Moderator
|
Цитата:
Сообщение от rutadmeen
Могу предложить код, которым я копировал строки Sales Line (делал из Заказа Счет). Можно несильно переделать под Ваши функции.
_Locals_ Name DataType Subtype Length LineNo Integer FieldRef FieldRef RecRef1 RecordRef RecRef2 RecordRef mxLineNo Integer mxItemCount Integer rItem Record Item rResEntry Record Reservation Entry rResEntryLineNo Integer _Globals_ Name DataType Subtype Length ContNo Code 20 FromContainer Record Container PurchaseLine Record Purchase Line CurrVendor Code 20 OldVendor Code 20 NewPurchaseLine Record Purchase Line NewPurchaseHeader Record Purchase Header PurchSetup Record Purchases & Payables Setup Fld Record Field Mess Text 100 Window Dialog _Code_ ... Fld.SETRANGE(TableNo, 39); ... IF Fld.FIND('-') THEN BEGIN NewPurchaseLine.INIT; NewPurchaseLine.BlockDynamicTracking(TRUE); REPEAT CASE Fld.FieldName OF 'Document Type': NewPurchaseLine."Document Type":= NewPurchaseLine."Document Type"::Invoice; 'Line No.': BEGIN LineNo := LineNo + 10000; NewPurchaseLine."Line No.":= LineNo; END; 'Document No.': NewPurchaseLine."Document No.":= NewPurchaseHeader."No."; ELSE RecRef1.GETTABLE(PurchaseLine); RecRef2.GETTABLE(NewPurchaseLine); FieldRef:= RecRef2.FIELD(Fld."No."); FieldRef.VALUE(RecRef1.FIELD(Fld."No.").VALUE); RecRef2.SETTABLE(NewPurchaseLine); END; UNTIL Fld.NEXT=0; NewPurchaseLine.INSERT; ... END; Хотя, если как посоветовал Dzemon , то вроде короче получается |
|
05.10.2004, 14:26 | #8 |
Участник
|
издержки перехода от 1С. ничего не поделаешь
__________________
С уваженем, rootadmin |
|
05.10.2004, 16:12 | #9 |
Участник
|
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали |
|