Итак. Решение ( для кодюнита НЕ для отчета).
1. Создаем нужную нам таблицу 50028 Export Vendor и задаем нужные нам поля.
2. Создаем codeunit и пишем в нем новую функцию:
Код:
CopyFromVendor(VAR vend : Record Vendor;process : 'Insert,Delete,Update,Rename';VAR rec : Code[10])
expvend.TRANSFERFIELDS(vend);
expvend."Last Date Modified":= TODAY;
expvend."Last Time Modified":= TIME;
expvend."No. Old":=rec;
CASE process OF
process::Rename:
expvend.Process:=expvend.Process::Rename;
process::Insert:
expvend.Process:=expvend.Process::Insert;
process::Delete:
expvend.Process:=expvend.Process::Delete;
process::Update:
expvend.Process:=expvend.Process::Update;
END;
expvend.INSERT(TRUE);
Входные параметры соответственно:
- vend - таблица 23 Vendor ,
- process - действие( переменная типа Option с вариантами Insert,Delete,Update,Rename,
- rec - запись.
3. В таблице 23 Vendor в соответствующих тригерах пишем следующий код:
Код:
OnInsert()
reportExp.copyFromVendor(Rec,process::Insert,xRec."No.");
OnModify()
NavisionExchange.CopyFromVendor(Rec,process::Update,xRec."No.");
OnDelete()
NavisionExchange.CopyFromVendor(Rec,process::Delete,xRec."No.");
OnRename()
NavisionExchange.CopyFromVendor(Rec,process::Rename,xRec."No.");
Передаваемые параметры:
- Rec - текущая запись таблицы
- process - совершаемое действие соответствует триггеру, в котором вызывается)
- xRec - прошлая запись
4. В таблице 23 Vendor создается:
- переменная NavisionExchange типа codeunit, чтобы использовать функцию CopyFromVendor;
- переменная process типа Option со значениями 'Insert,Delete,Update,Rename.
В функцию передается значение переменной соответствующее имени триггера (см. код). В переменную Rec передается текущая запись, в xRec - прошлая.
Для того чтобы поле Export Line No. было инкрементным и формироваться по стандартной серии номеров ЭКСП_ПОСТ делаем соедующие действия:
1. Создаем в Финансы-Настройка - Серии номеров своб серию ЭКСП_ПОСТ и задаем ей диапазон , к примеру, 1..9999. Дату можно не указывать.
2.В таблице Export Vendor в триггере OnInsert() нужно использовать кодюнит Serial No. . а в нем есть функция setSerial(), кажется так она называется. точно не помню.
Так вот в первом входном параметре этой функции нужно написать "ЭКСП_ПОСТ".
И ВУ а ля!)