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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.09.2009, 00:16   #1  
vtulka is offline
vtulka
Участник
 
12 / 10 (1) +
Регистрация: 27.09.2009
процедура синхронизации или отчет
Привет всем. Заранее прошу прощения, если подобная тем уже была задета. Новичкам изучающим Навижн посоветовали начинать с конкретного задания..Итак есть задание:
Создать таблицу 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  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
1. Вопросы про Navision лучше задавать на forum.mazzy.ru - там больше специалистов именно по этой системе.
2. Когда будете задавать вопрос там, уточните, что такое "трансфер" в который должны ложиться записи (и какие записи).
3. Что касается действий пользователя: удаление, переименование и пр. Есть два варианта: первый - модифицировать соотвествующий триггеры таблицы 23 (onModify, onDelete).
второй - анализировать лог изменений, правда предварительно его нужно настроить и включить (Администрирование, Общее, Протокол изменений).
За это сообщение автора поблагодарили: vtulka (1).
Старый 14.11.2009, 01:05   #3  
vtulka is offline
vtulka
Участник
 
12 / 10 (1) +
Регистрация: 27.09.2009
Итак. Решение ( для кодюнита НЕ для отчета).
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(), кажется так она называется. точно не помню.
Так вот в первом входном параметре этой функции нужно написать "ЭКСП_ПОСТ".
И ВУ а ля!)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как в Navision сторнировать учтенный Авансовый отчет? Enter NAV: Функционал 2 27.04.2006 12:14
Отчет в Excel - обработка триггеров Saska NAV: Программирование 2 14.12.2004 10:39
Простой, казалось бы, отчет ... aleksys NAV: Программирование 5 25.11.2004 13:27
Товарный отчет sergeypp NAV: Функционал 0 08.11.2003 13:02
При нажатии кнопки запустить ОТЧЕТ Timur Kaumov NAV: Программирование 7 28.07.2003 18:06

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

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

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