Показать сообщение отдельно
Старый 20.02.2020, 15:44   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Вообще в системе свойство mandatory может быть задано на разных уровнях.
- на поле таблицы
- на поле источника данных
- на элементе управления

Для вашего случая подойдёт уровень источника данных. Уровень таблицы будет недостаточным, так как не позволит динамически включать и выключать это свойство, а уровень элемента управления будет избыточным. Вообще обращаться напрямую к элементу управления не принято, разве что когда он не связан с источником данных.

1) Нужно уметь из кода менять свойства у полей источника данных.
Это делается так: FormDataSourceName_ds.object(FieldId).mandatory(value), где FieldId - это идентификатор поля. Он у вас либо уже есть, раз вы используете inventDimParm, либо его можно получить при помощи функции fieldNum().
2) Нужно понимать в какой момент это делать. Где написать этот код?
Самый простой вариант - это метод Active источника данных. Он срабатывает каждый раз при получении строкой фокуса ввода.

Если интересно то почитайте ещё про событие LinkActive. В вашем случае подойдёт и оно.