Вычисляемое поле обновляется только при срабатывании триггера OnValidate

Краткое изложение проблемы

Предположим, у вас на страцице есть вычисляемое поле («вычисляемое» в свойстве SourceExpression), а часть вычисления включает в себя ссылку на еще одно поле. Так вот, вычисляемое поле не обновится автоматически при изменении во втором поле (это, кстати, начиная с третьей версии навижн так работает – прим.перев.). Вычисляемое поле обновится ТОЛЬКО ЕСЛИ по обновляемому полю запустится триггер OnValidate, а это, в свою очередь, произойдет, только если в нем есть код. Т.ч. для автоматического пересчета CalcField’а надо поместить любой код в OnValidate – хотя бы комментарий.

Примечание: страница обновит вычисляемое поле только если есть код. Это сделано в целях повышения производительности системы (избежать ненужных UPDATE’ов).

Пример

Допустим, на странице имеются два поля:

Field1:
Name=Txt1;
SourceExpr=Txt1;

Field2:
Name=NewTxt1;
SourceExpr=Txt1 + 'XYZ'

В поле 2 всегда должно отражаться поле 1 и буквы XYZ. Но при вводе значения в поле 1, второе поле НЕ ОБНОВЛЯЕТСЯ автоматичски. Чтобы изменить такое поведение системы, разметите код в триггере OnValidate для поля 1. К примеру, добавьте простой комментарий вроде «//» или такой:

//This comment is used to update Field1 - do not delete

Будет запущен триггер OnValidate, который вызовет обновление остальных полей на странице.

Оригинал заметки здесь — Calculated field on a page is only recalculated when the OnValidation trigger is run

Автор:

В области Navision - с 2003 года. Профессиональные интересы: NAV, MS SQL, .NET, BPMN, IT-менеджмент. Предметная область: логистика, финансы, склады, 3PL.

Количество статей, опубликованных автором: 86.

Добавить комментарий