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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.04.2011, 23:44   #1  
AlexEgorov is offline
AlexEgorov
Участник
 
2 / 10 (1) +
Регистрация: 05.04.2011
По данному вопросу прошерстил весь форум и буржуйские форумы, но ничего подобного не нашел.
Опишу задачу, способ решения и ошибку.

Через "Журнал инвентаризации" делаю расчет запасов, получаю некоторое количество строк с товаром.
Лезу датапортом в таблицу 83, Item Journal line, экспортирую в файл следующие строки
"Journal Template Name", "Journal Batch Name","Line No.", "Item No.", "Qty. (Phys. Inventory)"
В файле получаю что-то типа: (в кодировке конечно же 866 DOS)

Код:
ИНВЕНТАР;СТАНДАРТ;10000;Item-No01; 134
Меняю значение "кол-во(инвентаризация)" товара с 134 на 130
Затем делаю импорт этим же датапортом, импорт происходит без ошибок. Открываю таблицу 83 или форму "журнал инвентаризации"
вижу что в поле Qty. (Phys. Inventory) соответствующего товара значение 130.
НО не срабатывает триггер onValidate() этого поля, соответственно, значения "кол-во" не изменяется, "кол-во по выставленным счетам", "тип операции" с прихода на расход.
Соответственно учесть это все нельзя
Триггер на поле срабатывает ок, если вводить в поле значение руками.

В триггере увидел вызов функции кодеюнита WMS Management под названием CheckItemJnlLineFieldChange(Rec,xRec,FIELDCAPTION("Qty. (Phys. Inventory)"));
Попытался сделать примерно тоже самое руками в коде триггера датапорта, но ничего не вышло.Ошибок при этом не было



Попробовал выполнить что-то подобное (см ниже) в триггере поля "Qty. (Phys. Inventory)" onBeforeEvaluateField() //исключительно для теста
Но не изменилось вообще ничего.
Код:
rCurItemInv := "Item Journal Line"; //т.к. из-за длинной строки "Item Journal Line" не получится использовать GET (компилятор говорит что длинновато для него)

rItemInventory.RESET;
IF rItemInventory.GET(rCurItemInv."Journal Template Name", rCurItemInv."Journal Batch Name", rCurItemInv."Line No.") //здесь даже нужная строка сидит
 THEN
  BEGIN
  rItemInventory."Qty. (Phys. Inventory)" := 1211;
  rItemInventory.MODIFY(TRUE);
  CurrDataport.SKIP;
  END;
Дебагером смотрел, код в ИФе выполняется.

Недавно присоединился к сообществу разработчиков Navision, очень надеюсь что коллеги подскажут может быть ошибка.
Городить огород на такой простой задаче не хочется, уверен что можно решить эту задачку как-то попроще
 


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

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

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