Показать сообщение отдельно
Старый 29.09.2020, 10:51   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,654 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
4.
если вам уж совсем надо проверить одно поле
то воспользуйтесь методом modifiedField на таблице.
там вам доступен this.orig() с оригинальными значениями полей
Здесь опечатка Для проверки используются методы ValidateXXX. Для проверки одного поля ValidateField()


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

При этом методы на таблице-источнике ValidateXXX() будут вызваны автоматически если работа выполняется из формы. Однако не будут вызваны автоматически, если работа с данными выполняется программно. В этом и смысл. Проверка выполняется не всегда, а лишь тогда, когда в этом есть необходимость.

В объектах на форме это, соответственно, метод Validate() для проверки и Modified() для действий при изменении значения.

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


PS: Насчет значений меньше нуля для чисел есть настройка в свойствах ExtendedDataType с именем AllowNegative. Если там поставить No, то запрет отрицательных значений будет выполняться автоматически
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: mazzy (2).