Как настроить условие Было изменено в универсальных списках до версии 16.0.2 (для разработчика)
|
---|
В старых версиях модуля (bizproc до версии 16.0.2) данное условие может быть применимо только после дополнительных настроек модуля и только для Универсальных списков и бизнес-процессов Новостей.
Важно: указанный ниже способ не подходит для бизнес-процессов CRM и Диска.
Для того, чтобы можно было использовать данный тип условия, нужна реализация на стороне модуля, который работает с процессом. При старте процесса необходимо передавать массив изменившихся полей через параметр CBPDocument::PARAM_MODIFIED_DOCUMENT_FIELDS :
CBPDocument::StartWorkflow( $arDocumentState["TEMPLATE_ID"], BizProcDocument::getDocumentComplexId($arParams["IBLOCK_TYPE_ID"], $arResult["ELEMENT_ID"]), array_merge($arBizProcParametersValues[$arDocumentState["TEMPLATE_ID"]], array( CBPDocument::PARAM_TAGRET_USER => "user_".intval($GLOBALS["USER"]->GetID()), CBPDocument::PARAM_MODIFIED_DOCUMENT_FIELDS => $modifiedFields )), $arErrorsTmp ); А для того, чтобы новое условие появилось в редакторе для настройки, необходимо реализовать в документе его поддержку: public static function isFeatureEnabled($documentType, $feature) { return in_array($feature, array(\CBPDocumentService::FEATURE_MARK_MODIFIED_FIELDS)); } |
Условие

Конструкция позволяет направить бизнес-процесс по разным сценариям в зависимости от заданного типа условия.
Структура конструкции
При добавлении конструкции Условие в шаблон бизнес-процесса автоматически создаются две ветки (минимальное количество). С помощью знака
добавляется новая ветка, а знак
на ветке - удаляет её. Других настроек у основного действия нет. В каждой ветке настраиваются условия выполнения этой ветки
.
С версии 22.400.0 модуля Бизнес-процессы ветки условий можно легко менять местами и копировать с помощью стрелок и
. По клику на стрелку ветка переместится в соответствующую сторону, а при зажатой клавише Ctrl ветка скопируется.
Проверка условий начинается слева направо. Если условие выполняется, то действия, расположенные в ветке под ним, будут исполнены. Если же условие не выполняется, то происходит переход к условию, расположенному правее, и так до тех пор, пока какое-либо условие не будет выполнено.
Типы условий
В списке типов могут отображаться не все типы условий, перечисленные ниже (зависит от самого бизнес-процесса и наличия переменных/параметров).
- Смешанное
Тип условия Смешанное доступен с версии 20.100.0 модуля Бизнес-процессы.
Тип даёт возможность указать условие одновременно по параметрам, переменным, константам, глобальным константам, глобальным переменным, полям документа и дополнительным результатам без необходимости создавать разные ветки и дополнительные переменные. При это условия объединяются по правилу И / ИЛИ. При выборе И ветка условий будет исполняться при выполнении обоих условий, а при ИЛИ - любого из указанных.
На скриншоте под номером 1 выбрано условие типа Поле документа, а под номером 2 - Глобальная переменная. Условия объединены правилом И.
- PHP код
В качестве условия указывается код Задавать PHP-код может только пользователь с правами администратора. . В случае если указанный PHP код вернет значение
true
, то будет выполнена ветка действий условия, если возвратитсяfalse
, то будет произведен переход к следующему условию.Внимание! Для этого типа условия можно использовать только PHP-код. Параметры типа{=Variable:Variable2_printable}
не поддерживаются. Также результатом выполнения кода в условии должно быть логическое выражение (true
илиfalse
). - Значение переменной
Ветка действий условия будет выполнена, если совпадут значения, связанные с переменными бизнес-процесса.
Для этого необходимо выбрать Переменную/Параметр, указать оператор условия из списка и значение.
Примечание: В этом типе могут быть использованы значения переменных или параметров шаблона. Константы, глобальные константы и глобальные переменные доступны только в типе Смешанное условие.Примечание: С версии 20.0.800 модуля Бизнес-процессы добавлены операторы условийне содержит
ине содержится в
. - Поле документа
Ветка действий условия будет выполнена, если совпадут параметры, связанные с полями документа.
Для этого необходимо выбрать Поле документа, указать оператор условия из списка и значение. Варианты доступных полей значения меняются в зависимости от выбранного поля документа.
Примечание: С версии 20.0.800 модуля Бизнес-процессы добавлены операторы условийне содержит
ине содержится в
.Примечание: Для типа условия Поле документа есть полезный оператор условия Было изменено(только для Универсальных списков и бизнес-процессов Новостей). Если бизнес-процесс настроен на запуск при изменении документа, то становится возможно определять внутри него измененные поля. Ветка условий в таком случае будет выполняться, если в выбранном в настройках поле документа были внесены какие-то изменения.
- Истина
Ветка действий будет выполнена сразу. Это условие выполняется всегда.
Подробнее об условиях И/ИЛИ
Простое пояснение логики без привязки к бизнес-процессам
| |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Посмотрим пример для конструкции Условие. Допустим у нас есть шаблон бизнес-процесса, в котором по условию определяется предоставить услугу платно или бесплатно. Услуга будет предоставлена платно если поле Комментарий сделки не содержит слова: Благотворительность и Подарок. При составлении условия возникает вопрос что использовать: И или ИЛИ?
|
В зависимости от того, что будет установлено в условии, результаты получатся разными:
|
Как видим, разница между условиями проявляется когда в комментарии содержится одно слово из двух. В случае с условием ИЛИ - для выполнения условия достаточно, чтобы не содержалось только одно из двух слов, что не соответствует нашей задаче. Аналогично происходит с любым количеством слов.
Если несколько условий
При использовании нескольких условий и одновременно сравнений И и ИЛИ, приоритет будет у И. В виде формулы это можно представить так:
(УСЛ1 И УСЛ2) ИЛИ (УСЛ3 И УСЛ4)
и Ваше мнение важно для нас