Особенности формирования валидации Валидация предназначена для создания дополнительных проверок изменений полей, которые делает пользователь в системе. false W3sidGl0bGUiOiLQkNCy0YLQvtC80LDRgtC40LfQsNGG0LjRjyIsInVybCI6Ii9kZXZlbG9wZXJzL2F1dG9tYXRpb24vIn0seyJ0aXRsZSI6IlBpcGVMYW5nIiwidXJsIjoiL2RldmVsb3BlcnMvYXV0b21hdGlvbi9waXBlLWxhbmcvIn0seyJ0aXRsZSI6ItCf0YDQsNCy0LjQu9CwINC/0L7QtNCz0L7RgtC+0LLQutC4IiwidXJsIjoiL2RldmVsb3BlcnMvYXV0b21hdGlvbi9waXBlLWxhbmcvcHJlcGFyYXRpb24tcnVsZXMvIn1d Автоматизация /developers/automation/ ["developers","Автоматизация"] ["developers","Автоматизация","PipeLang"] developers

Особенности формирования валидации

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

Валидация предназначена для создания дополнительных проверок изменений заказов/клиентов/корп.клиентов/задач, которые делает пользователь в системе. Проверки применяются не только при редактировании в карточке заказа/клиента/кор.клиента/задачи, но и в групповых операциях.

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

В условии можно работать с объектом, над которым производится действие (это order,customer, customercorporate, task), а также с объектом changeSet (тип Change\EntityChangeSet), в котором содержится информация об изменяемых полях.

changeSet.isUpdate() and changeSet.hasChangedField('payments.status')

В некоторых случаях в валидации требуется проверить некоторые атрибуты пользователя, который изменяет данные в заказе/клиенте/ корп. клиенте/задаче. Например, проверить, что пользователь входит в определенную группу. Получить пользователя, меняющего данные, можно через функцию user().

  • Запрет на завершение задачи без заполненного поля «Описание»
changeSet.isUpdate()
and changeSet.hasChangedField("complete")
and changeSet.getNewValue("complete") == true
and task.commentary == null
  • Запрет на создание задачи без срока исполнения
changeSet.isCreate() and task.getDatetime() == null
  • Разрешено только завершение задачи, редактировать нельзя
changeSet.isUpdate()
and changeSet.hasChangesExcluding(["complete", "completed_at"])
  • Запрет менять статус оплаты заказа
changeSet.isUpdate() and changeSet.hasChangedField('payments.status')
  • Дата доставки должна быть сегодняшней датой или позднее
order.deliveryDate < date('now 00:00:00') and (
(changeSet.isCreate() and order.deliveryDate) or
(changeSet.isUpdate() and changeSet.hasChangedField('delivery_date'))
)
  • Отгрузку может выполнять только пользователь группы Логист

Примечание

По умолчанию в системе нет группы Логист, но вы можете создавать нужные вам группы пользователей.
changeSet.hasChangedField('shipped') and not user().hasGroup('logist')
  • Пользователь может менять только определенные поля
changeSet.hasChangesExcluding(['status', 'first_name', 'last_name'])
Благодарим за отзыв.
Была ли статья полезна?
Нет
  • Рекомендации не помогли
  • Нет ответа на мой вопрос
  • Текст трудно понять
  • Не нравится описанный функционал
Да
Предыдущая статья
Работа с товарами в триггерах, валидации и типах цен
Состав заказа является массивом данных, соответственно, работа с ним ведется с помощью специальных фильтров созданных в PipeLanguage. В статье разберем, как работать с фильтрами в типах цен, триггерах и валидации и в разрезе товаров.
Следующая статья
Проверка срабатывания триггеров и валидации
При необходимости проверить триггер или валидацию на корректную работу вы можете воспользоваться журналом действий, в котором отображается каждое срабатывание и, в случае возникновения, ошибки с подробным описанием.