Валидаторы (или блокировки) — инструмент, позволяющий осуществлять проверку по заданному условию при выполнении определённого действия над элементом системы и в зависимости от результата проверки разрешить данное действие или заблокировать его.
Есть два типа валидаторов:

  • Блокировка изменения (формула) — срабатывает при любом изменении атрибутов элемента.
  • Блокировка удаления (формула) — срабатывает при удалении элемента.

Валидаторы концептуально состоят из двух частей:

  • Условие срабатывания (формула) — формула, которая определяет, нужно ли проверять условие блокировки. Возвращает true или false:
    • true — условие блокировки будет проверяться;
    • false — условие блокировки проверяться не будет.
  • Условие блокировки (формула) — основная формула валидатора, которая должна возвращать булево значение (true/false):
    • true — условие соблюдено, блокировки нет;
    • false — условие не соблюдено; текущее действие выполнено не будет, а пользователю будет показано сообщение из атрибута «Сообщение пользователю о блокировке» текущего валидатора.

Важно! Различие состояний в формулах условия
В условии срабатывания и в условии блокировки используется разное состояние текущего элемента:

  • В условии срабатывания используется состояние атрибутов элемента с учётом текущего изменения, которое проверяет валидатор.
  • В условии блокировки используется состояние атрибутов элемента до текущего изменения.

Например, если у замечания сменили статус с «Не начато» на «Выполняется»: при проверке условия срабатывания статус будет «Выполняется», а при проверке условия блокировки статус будет «Не начато». Такой подход позволяет накладывать формулы проверки как на состояние «До», так и на состояние «После».

Порядок создания валидатора (блокировки)

  1. В настройках пространства Центр администрирования в разделе Типы элементов выбрать необходимый тип элемента, для которого требуется настроить блокировку.
  2. В панели справа выбрать закладку Валидаторы и нажать Добавить (для редактирования уже существующего валидатора выполните двойной клик на соответствующей записи).
  3. В появившемся выпадающем списке кнопки «Добавить» выбрать соответствующий тип блокировки.
  4. Заполнить атрибуты нового валидатора:

    Атрибут

    Описание

    Название

    Произвольное название валидатора (рекомендуется давать смысловые названия, отражающие суть проверки).

    Тип

    «Блокировка изменения (формула)» или «Блокировка удаления (формула)». Это определяется при создании валидатора, в дальнейшем не изменяется.

    Условие срабатывания (формула)

    Формула, возвращающая true (проверять блокировку) или false (не проверять). Использует состояние атрибутов после изменения.

    Условие блокировки (формула)

    Основная формула валидатора. true — разрешить действие, false — заблокировать. Использует состояние атрибутов до изменения.

    Сообщение пользователю о блокировке

    Текст, который будет показан пользователю при блокировке действия.
    Внимание! Текст сообщения может быть также рассчитан по формуле. При использовании расчета по формуле
    этот атрибут должн содержать только формулу. Если нужен текст + вычисленное значение, то формула должна содержать формат и результат вычисления должен быть строковым (см. примеры ниже).


    Примеры

    Пример 1. Задача: при переводе замечания в статус «На доработку» проверить заполнение поля «Вопрос проектировщику». Если поле не заполнено — показать сообщение и заблокировать смену статуса:
  • Тип: Блокировка изменения (формула)
  • Условие срабатывания: This("Статус задачи.Название") == "На доработку"
  • Условие блокировки: IsNull(This("Вопрос проектировщику"))
  • Сообщение пользователю: Заполните поле "Вопрос проектировщику"

Пример 2. Задача: При ручном заполнении Текущего процента выполнения проекта на папке комплекта блокировать ввод, если сумма заполненных процентов на всех комплектах проекта больше 100

 

Поведение при переходе к связанному элементу из сообщения валидатора

Если в условии блокировки или в сообщении о блокировке ссылается на связанный элемент, то начиная с версии 25.1 в сообщении валидатора, которое видит пользователь, отображается ссылка на связанный элемент. При переходе по ссылке:

  • в табличном представлении выделяется строка найденного элемента;
  • автоматически открывается карточка данного элемента.

Ранее переход осуществлялся без подсветки строки и открытия карточки, что затрудняло идентификацию конкретного элемента в списке. (VITROCAD-5929)

Особенности работы валидаторов при автоматическом запуске процесса УТОЧНЕНО

В сценариях, когда процесс запускается автоматически (через правило Автоматизации, а не пользователем вручную), работа валидаторов имеет следующие особенности:
Предупреждение
При автоматическом запуске процесса валидаторы, в формулах которых используются функции работы со связями (Refs), могут отрабатывать некорректно. В таких случаях блокировка может не сработать даже при нарушении заданного условия.
Это поведение фиксировалось в версиях до 25.1 и было исправлено в версии 25.1 (VITROCAD-5674). Тем не менее, при разработке сложных сценариев с автозапуском процессов рекомендуется проводить дополнительное тестирование взаимодействия валидаторов и автоматизации.

Связь с модулем Автоматизации

Валидаторы и Автоматизация работают совместно, обеспечивая полный цикл управления жизненным циклом элементов системы:Чаще всего валидаторы нужны для блокировки действий пользователя, тогда как автоматизация - это про автоматические действия самой системы. Не очень понятно, какая здесь связь. Ниже и описаны роли и взаимосвязи в жизненном цикле. Действия это не только пользовательские действия, но и автоматические

  • Валидаторы — это запреты: они блокируют действие, если условие не выполнено.
  • Автоматизация — это автоматические реакции: она выполняет действия при выполнении условий.

При отладке правил рекомендуется проверять оба инструмента в комплексе, так как конфликт между ними может приводить к неочевидному поведению системы.

  • No labels