|  28.09.2009, 00:16 | #1 | 
| Участник | процедура синхронизации или отчет 
			
			Привет всем. Заранее прошу прощения, если подобная тем уже была задета. Новичкам изучающим Навижн посоветовали начинать с конкретного задания..Итак есть задание:  Создать таблицу 50028 Export Vendor для передачи записей из таблицы 23 Vendor с определенными полями.. Значения поля 53005 Export Line No. должно быть инкрементным и формироваться по стандартной серии номеров ЭКСП_ПОСТ. Создать отчет 50014 Navision Exchange реализовать процедуру сихронизации из таблицы 23 Vendor (Поставщик) в таблицу 50028 Export Vendor (Экспорт Поставщик). Записи должны ложиться последовательно в трансфер, в зависимости от действий пользователя (создание, изменение, удаление, переименование). Подскажите пожалуйста как в отчете связать две таблицы или как в codeunit создать функцию, которая бы проверяла сходные поля двух таблиц и копировала требуемые в таблицу Export Vendor . | 
|  | 
|  30.09.2009, 18:31 | #2 | 
| MCTS | 
			
			1. Вопросы про Navision лучше задавать на forum.mazzy.ru  - там больше специалистов именно по этой системе. 2. Когда будете задавать вопрос там, уточните, что такое "трансфер" в который должны ложиться записи (и какие записи). 3. Что касается действий пользователя: удаление, переименование и пр. Есть два варианта: первый - модифицировать соотвествующий триггеры таблицы 23 (onModify, onDelete). второй - анализировать лог изменений, правда предварительно его нужно настроить и включить (Администрирование, Общее, Протокол изменений). | 
|  | |
| За это сообщение автора поблагодарили: vtulka (1). | |
|  14.11.2009, 01:05 | #3 | 
| Участник | 
			
			Итак. Решение ( для кодюнита НЕ для отчета).  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); 
 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."); 
 4. В таблице 23 Vendor создается: 
 В функцию передается значение переменной соответствующее имени триггера (см. код). В переменную Rec передается текущая запись, в xRec - прошлая. Для того чтобы поле Export Line No. было инкрементным и формироваться по стандартной серии номеров ЭКСП_ПОСТ делаем соедующие действия: 1. Создаем в Финансы-Настройка - Серии номеров своб серию ЭКСП_ПОСТ и задаем ей диапазон , к примеру, 1..9999. Дату можно не указывать. 2.В таблице Export Vendor в триггере OnInsert() нужно использовать кодюнит Serial No. . а в нем есть функция setSerial(), кажется так она называется. точно не помню. Так вот в первом входном параметре этой функции нужно написать "ЭКСП_ПОСТ". И ВУ а ля!) | 
|  |