Перейти к основному содержимому
Версия: 7.0

Правила: ограничения

Правила ограничений

  1. Когда выбор значения в одном свойстве должен быть ограничен значениями других свойств — соседние поля той же формы, текущий контекст, связанные объекты — ассистенту СЛЕДУЕТ в первую очередь рассматривать CONSTRAINT ... CHECKED BY <свойство>.

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

    Фильтр доходит только до этих диалогов изменения. Механизм ввода, предлагающий значения как-то иначе, его не использует, и там нарушающее значение отвергается только при проверке самого ограничения.

  2. Откатываться к ручным фильтрам на форме или валидирующим действиям СЛЕДУЕТ, когда CHECKED BY не способен выразить ограничение (например, фильтр зависит от состояния UI, не смоделированного как свойство, или правило носит рекомендательный, а не обязательный характер), — а также когда ограничение ВЫРАЗИМО так, но значение выбирается другим механизмом, до которого фильтр CHECKED BY не доходит.

  3. Ассистенту НЕ СЛЕДУЕТ помещать в условие CONSTRAINT тяжелые группировки по большим таблицам (особенно вложенные нематериализованные): инкрементальная проверка при применении может развернуться в непрактично большой запрос, даже при заданных для свойств хинтах вычисления.

    Для таких дорогих проверок используйте событие WHEN: дешевое условие-детектор изменений, чтение тяжелых значений в LOCAL в обработчике, затем MESSAGE + CANCEL при нарушении.