Цитата:
Сообщение от
ZVV
Вот эта тема, а точнее упоминание gloomie о срабатывании validateField() после изменения значения поля на форме, подвигла на продолжение эксперимента.
На моей форме изначально не было контрола, ассоциированного с изменяемым полем - добавил для чистоты эксперимента и поставил breakpoint'ы на его modified(), validate() и validateField() на таблицу.
Использовал 4 варианта по два раза - с включенными и отключенными breakpoint'ами для отлова вызова :
1) Изменение поля через прямой lookup()
2) Изменение поля прямым ручным вводом в него
3) Изменение поля косвенно через edit-методом
4) Изменение поля косвенно через ручной ввод в поле с edit-методом
Поле менялось всегда - как в самой таблице, так и в контроле во всех случаях, однако только в первых двух случаях срабатывал breakpoint в validateField() на таблице и выдавал следующий стек
[c] \Data Dictionary\Tables\
MyTable\Methods\validateField
[c] \Classes\FormDataObject\validate
[c] \Forms\
MyForm\Data Sources\
MyTable\Fields\
MyField\Methods\validate
[c] \Classes\FormStringControl\Modified
В 3 и 4 случаях не срабатывал ни один из breakpoint'ов ...
Т.е. изменение поля внешним прямым воздействием через форму (lookup, ручной ввод) инициирует выполнение у контрола с этим полем метода modified() и дальнейшую цепочку вызовов до validateField() . Но внутреннее изменение значения контрола через изменение его поля в табличной переменной (edit-методом, ручным вводом в поле edit-метода) - не вызывает у контрола с модифицируемым полем modified() и не порождает цепочки вызовов до validateField().
IMHO, баг ...