Вычисляемое поле обновляется только при срабатывании триггера OnValidate
Краткое изложение проблемы
Предположим, у вас на страцице есть вычисляемое поле («вычисляемое» в свойстве SourceExpression), а часть вычисления включает в себя ссылку на еще одно поле. Так вот, вычисляемое поле не обновится автоматически при изменении во втором поле (это, кстати, начиная с третьей версии навижн так работает – прим.перев.). Вычисляемое поле обновится ТОЛЬКО ЕСЛИ по обновляемому полю запустится триггер OnValidate, а это, в свою очередь, произойдет, только если в нем есть код. Т.ч. для автоматического пересчета CalcField’а надо поместить любой код в OnValidate – хотя бы комментарий.
Примечание: страница обновит вычисляемое поле только если есть код. Это сделано в целях повышения производительности системы (избежать ненужных UPDATE’ов).
Пример
Допустим, на странице имеются два поля:
Name=Txt1;
SourceExpr=Txt1;
Field2:
Name=NewTxt1;
SourceExpr=Txt1 + 'XYZ'
В поле 2 всегда должно отражаться поле 1 и буквы XYZ. Но при вводе значения в поле 1, второе поле НЕ ОБНОВЛЯЕТСЯ автоматичски. Чтобы изменить такое поведение системы, разметите код в триггере OnValidate для поля 1. К примеру, добавьте простой комментарий вроде «//» или такой:
Будет запущен триггер OnValidate, который вызовет обновление остальных полей на странице.
Оригинал заметки здесь —

Автор: Андрей Стрельников
В области Navision - с 2003 года. Профессиональные интересы: NAV, MS SQL, .NET, BPMN, IT-менеджмент. Предметная область: логистика, финансы, склады, 3PL.
Количество статей, опубликованных автором: 86.