Валидаторы (или блокировки) — инструмент, позволяющий осуществлять проверку по заданному условию при выполнении определённого действия над элементом системы и в зависимости от результата проверки разрешить данное действие или заблокировать его.
Есть два типа валидаторов:
- Блокировка изменения (формула) — срабатывает при любом изменении атрибутов элемента.
- Блокировка удаления (формула) — срабатывает при удалении элемента.
Валидаторы концептуально состоят из двух частей:
- Условие срабатывания (формула) — формула, которая определяет, нужно ли проверять условие блокировки. Возвращает true или false:
- true — условие блокировки будет проверяться;
- false — условие блокировки проверяться не будет.
- Условие блокировки (формула) — основная формула валидатора, которая должна возвращать булево значение (true/false):
- true — условие соблюдено, блокировки нет;
- false — условие не соблюдено; текущее действие выполнено не будет, а пользователю будет показано сообщение из атрибута «Сообщение пользователю о блокировке» текущего валидатора.
Важно! Различие состояний в формулах условия
В условии срабатывания и в условии блокировки используется разное состояние текущего элемента:
- В условии срабатывания используется состояние атрибутов элемента с учётом текущего изменения, которое проверяет валидатор.
- В условии блокировки используется состояние атрибутов элемента до текущего изменения.
Например, если у замечания сменили статус с «Не начато» на «Выполняется»: при проверке условия срабатывания статус будет «Выполняется», а при проверке условия блокировки статус будет «Не начато». Такой подход позволяет накладывать формулы проверки как на состояние «До», так и на состояние «После».
Порядок создания валидатора (блокировки)
- В настройках пространства Центр администрирования в разделе Типы элементов выбрать необходимый тип элемента, для которого требуется настроить блокировку.
- В панели справа выбрать закладку Валидаторы и нажать Добавить (для редактирования уже существующего валидатора выполните двойной клик на соответствующей записи).
- В появившемся выпадающем списке кнопки «Добавить» выбрать соответствующий тип блокировки.
- Заполнить атрибуты нового валидатора:
Атрибут
Описание
Название
Произвольное название валидатора (рекомендуется давать смысловые названия, отражающие суть проверки).
Тип
«Блокировка изменения (формула)» или «Блокировка удаления (формула)». Это определяется при создании валидатора, в дальнейшем не изменяется.
Условие срабатывания (формула)
Формула, возвращающая true (проверять блокировку) или false (не проверять). Использует состояние атрибутов после изменения.
Условие блокировки (формула)
Основная формула валидатора. true — разрешить действие, false — заблокировать. Использует состояние атрибутов до изменения.
Сообщение пользователю о блокировке
Текст, который будет показан пользователю при блокировке действия.
Примеры
Пример 1. При переводе замечания в статус «На доработку» проверить заполнение поля «Вопрос проектировщику». Если поле не заполнено — показать сообщение и заблокировать смену статуса:
- Тип: Блокировка изменения (формула)
- Условие срабатывания: This("Статус задачи.Название") == "На доработку"
- Условие блокировки: IsNull(This("Вопрос проектировщику"))
- Сообщение пользователю: Заполните поле "Вопрос проектировщику"
Поведение при переходе к связанному элементу из сообщения валидатора
Если в условии блокировки или в сообщении о блокировке ссылается на связанный элемент, то начиная с версии 25.1 в сообщении валидатора, которое видит пользователь, отображается ссылка на связанный элемент. При переходе по ссылке:
- в табличном представлении выделяется строка найденного элемента;
- автоматически открывается карточка данного элемента.
Ранее переход осуществлялся без подсветки строки и открытия карточки, что затрудняло идентификацию конкретного элемента в списке. (VITROCAD-5929)
Особенности работы валидаторов при автоматическом запуске процесса УТОЧНЕНО
В сценариях, когда процесс запускается автоматически (через правило Автоматизации, а не пользователем вручную), работа валидаторов имеет следующие особенности:
Предупреждение
При автоматическом запуске процесса валидаторы, в формулах которых используются функции работы со связями (Refs), могут отрабатывать некорректно. В таких случаях блокировка может не сработать даже при нарушении заданного условия.
Это поведение фиксировалось в версиях до 25.1 и было исправлено в версии 25.1 (VITROCAD-5674). Тем не менее, при разработке сложных сценариев с автозапуском процессов рекомендуется проводить дополнительное тестирование взаимодействия валидаторов и автоматизации.
Связь с модулем Автоматизации
Валидаторы и Автоматизация работают совместно, обеспечивая полный цикл управления жизненным циклом элементов системы:Чаще всего валидаторы нужны для блокировки действий пользователя, тогда как автоматизация - это про автоматические действия самой системы. Не очень понятно, какая здесь связь. Ниже и описаны роли и взаимосвязи в жизненном цикле. Действия это не только пользовательские действия, но и автоматические
- Валидаторы — это запреты: они блокируют действие, если условие не выполнено.
- Автоматизация — это автоматические реакции: она выполняет действия при выполнении условий.
При отладке правил рекомендуется проверять оба инструмента в комплексе, так как конфликт между ними может приводить к неочевидному поведению системы.


