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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.10.2008, 10:01   #1  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Те рекомендации, которые дал Milk и я они подходят если в таблицу импортуются не все поля. Т.е. в справочник товаров импортируются только цены (в датапорте два поля Товар Но. и Цена). В этом случае датапорт обновит в таблице только поле Цена, а остальные не тронет.

Я так понял вы хотите хотите, чтобы если в поле есть не пустое значение, а в датапорте в этом поле пусто, то нужно оставить старое значение, и не импортировать "путое" из датапорта.

Тут мне в голову пришло такое решение, возможно есть варианты по красивше:
Объявляем такую же переменную Record как и импортируемая таблица (например, 27 - товары).
Объявляем переменную такого же типа как поле первичного ключа этой табицы (считаем, что в первичный ключ входит одно поле). Например cNo code 20.
И еще одну переменную типа Boolean (bExist)
В триггере OnBeforeEvaluateField(VAR Text : Text[1024]) поля первичного ключа (в нашем случае "Но.") пишем такой код:
Код:
//EVALUATE(cNo,Text);  //это если поле типа интежер, для code думаю хватит:
cNo:=Text; //возможно придется отрезать пробелы вручную (т.к. длина явно не совпадает). не проверял.

IF rItem.GET(cNo) THEN
  bExist:=TRUE;
Далее в триггере OnAfterImportRecord()датаайтема пишем

Код:
IF bExist THEN BEGIN
  IF (Поле1='')AND(rItem.Поле1<>'') THEN
	Поле1:=rItem.Поле1;  //или Валидейт, что больше нравится.
  ....

  MODIFY;
END;
 


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

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

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