Правила: ограничения
Правила ограничений
-
Когда выбор значения в одном свойстве должен быть ограничен значениями других свойств — соседние поля той же формы, текущий контекст, связанные объекты — ассистенту СЛЕДУЕТ в первую очередь рассматривать
CONSTRAINT ... CHECKED BY <свойство>.CHECKED BYзаставляет диалог изменения для указанного свойства автоматически фильтровать варианты, нарушающие ограничение, так что запрет применяется декларативно в момент выбора, а не постфактум.Фильтр доходит только до этих диалогов изменения. Механизм ввода, предлагающий значения как-то иначе, его не использует, и там нарушающее значение отвергается только при проверке самого ограничения.
-
Откатываться к ручным фильтрам на форме или валидирующим действиям СЛЕДУЕТ, когда
CHECKED BYне способен выразить ограничение (например, фильтр зависит от состояния UI, не смоделированного как свойство, или правило носит рекомендательный, а не обязательный характер), — а также когда ограничение ВЫРАЗИМО так, но значение выбирается другим механизмом, до которого фильтрCHECKED BYне доходит. -
Ассистенту НЕ СЛЕДУЕТ помещать в условие
CONSTRAINTтяжелые группировки по большим таблицам (особенно вложенные нематериализованные): инкрементальная проверка при применении может развернуться в непрактично большой запрос, даже при заданных для свойств хинтах вычисления.Для таких дорогих проверок используйте событие
WHEN: дешевое условие-детектор изменений, чтение тяжелых значений вLOCALв обработчике, затемMESSAGE+CANCELпри нарушении.