AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.10.2004, 16:48   #1  
барбудас is offline
барбудас
Участник
 
55 / 10 (1) +
Регистрация: 30.09.2004
как в датапорте обработке импорта записи эту запись "удвоить" (скопировать) и добавить обе записи?

поясню. таблица "Фин. Журнал Строка". (бухгалтерия) и файл структуры "дата; сумма". грубо говоря, это расходники.
мне нужно импорировать, попутно для каждого расходника создавая "почти копию" т.е. приходник с amount = "-сумма".

как, в каком триггере это можно сделать?
неплохо бы поглядеть на пример реализации.
спасибо.
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали
Старый 04.10.2004, 10:18   #2  
Dzemon is offline
Dzemon
Moderator
 
1,247 / 12 (3) ++
Регистрация: 09.09.2004
В триггере OnBeforeImportRecord()

ЗЫ Что-то недоброе вы задумали...
Старый 04.10.2004, 16:17   #3  
барбудас is offline
барбудас
Участник
 
55 / 10 (1) +
Регистрация: 30.09.2004
да нет, ничего там "недоброго" нет. я еще пока не злой...

просто есть структура данных, по которой нужно провести сразу 2 операции - поступление денег из филиала и передача в банк.
данные лежат в БД. отсюда есть выбор - "раздвоить" либо при генерации файла (простейший запрос с union'ом - что лично для меня проще), либо же средствами навижн при импорте (что для меня сложнее, но, видимо, полезнее, а потому привлекательнее).
недостаток первого способа: придется дважды (под каждую из "парных" записей) выполнять ряд команд, в то время, как при втором способе мы на этом немножечко сЪэкономим...

где б еще примерчик кода (добавление записи) раздобыть?..
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали
Старый 04.10.2004, 16:28   #4  
Dzemon is offline
Dzemon
Moderator
 
1,247 / 12 (3) ++
Регистрация: 09.09.2004
Объявляется переменная Var1 типа Record "Фин. Журнал Строка".
В триггере OnAfterImportRecord переменной Var1 присваивается запись датаайтема, типа Var1 := "Фин. Журнал Строка";
потом в полях Var1 делаются необходимые изменения и VALIDATE, а потом Var1.INSERT
Старый 04.10.2004, 16:37   #5  
rootadmin is offline
rootadmin
Участник
Аватар для rootadmin
 
224 / 10 (1) +
Регистрация: 25.03.2003
Адрес: Москва
Могу предложить код, которым я копировал строки 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  
барбудас is offline
барбудас
Участник
 
55 / 10 (1) +
Регистрация: 30.09.2004
Спасибо большое!!!
Все понятно.
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали
Старый 05.10.2004, 10:46   #7  
Dzemon is offline
Dzemon
Moderator
 
1,247 / 12 (3) ++
Регистрация: 09.09.2004
Цитата:
Сообщение от 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  
rootadmin is offline
rootadmin
Участник
Аватар для rootadmin
 
224 / 10 (1) +
Регистрация: 25.03.2003
Адрес: Москва
издержки перехода от 1С. ничего не поделаешь
__________________
С уваженем,
rootadmin
Старый 05.10.2004, 16:12   #9  
барбудас is offline
барбудас
Участник
 
55 / 10 (1) +
Регистрация: 30.09.2004
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:03.