1 уровень - интуитивно все понятно из интерфейса, но почитать стоит.
1 из 5
Просмотров:
54799
Дата изменения:
09.11.2024
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Старт, Стандарт, Малый бизнес
Конструкция позволяет направить бизнес-процесс по разным сценариям в зависимости от заданного типа условия.
Структура конструкции
При добавлении конструкции Условие в шаблон бизнес-процесса автоматически создаются две ветки (минимальное количество). С помощью знака
добавляется новая ветка, а знак на ветке — удаляет её. Других настроек у основного действия нет. В каждой ветке настраиваются условия выполнения этой ветки .
С версии 22.400.0 модуля Бизнес-процессы ветки условий можно легко менять местами и копировать с помощью стрелок и . По клику на стрелку ветка переместится в соответствующую сторону, а при зажатой клавише Ctrl ветка скопируется.
Для экономии места на схеме можно свернуть всю конструкцию с помощью кнопки .
Проверка условий выполняется слева направо. Если условие выполняется, то действия, расположенные в ветке под ним, будут исполнены. Если же условие не выполняется, то происходит переход к условию, расположенному правее, и так до тех пор, пока какое-либо условие не будет выполнено.
Типы условий
В списке типов могут отображаться не все типы условий, перечисленные ниже (зависит от самого бизнес-процесса и наличия переменных/параметров).
Если ни одно из условий не выполнится, то, бизнес-процесс продолжит выполнять действия расположенные под конструкцией Условие. Другими словами он ее «перескочит».
Смешанное
Тип даёт возможность указать условие одновременно по параметрам, переменным, константам, глобальным константам, глобальным переменным, полям документа и дополнительным результатам без необходимости создавать разные ветки и дополнительные переменные. При это условия объединяются по правилу И / ИЛИ. При выборе И ветка условий будет исполняться при выполнении обоих условий, а при ИЛИ — любого из указанных.
На скриншоте под номером 1 выбрано условие типа Поле документа, а под номером 2 — Глобальная переменная. Условия объединены правилом И.
PHP код
В качестве условия указывается
код
Задавать PHP-код может только пользователь с правами администратора.
. В случае если указанный PHP код вернет значение true, то будет выполнена ветка действий условия, если возвратится false, то будет произведен переход к следующему условию.
Для этого типа условия можно использовать только PHP-код. Параметры типа {=Variable:Variable2_printable} не поддерживаются. Также результатом выполнения кода в условии должно быть логическое выражение (true или false).
Значение переменной
Ветка действий условия будет выполнена, если совпадут значения, связанные с переменными бизнес-процесса.
Для этого необходимо выбрать Переменную/Параметр, указать оператор условия из списка и значение.
В этом типе могут быть использованы значения переменных или параметров шаблона. Константы, глобальные константы и глобальные переменные доступны только в типе Смешанное условие.
Поле документа
Ветка действий условия будет выполнена, если совпадут параметры, связанные с полями документа.
Для этого необходимо выбрать Поле документа, указать оператор условия из списка и значение. Варианты доступных полей значения меняются в зависимости от выбранного поля документа.
Для типа условия Поле документа есть полезный оператор условия
Было изменено
(только для Универсальных списков и бизнес-процессов Новостей). Если бизнес-процесс настроен на запуск при изменении документа, то становится возможно определять внутри него измененные поля. Ветка условий в таком случае будет выполняться, если в выбранном в настройках поле документа были внесены какие-то изменения.
Как настроить условие Было изменено в универсальных списках до версии 16.0.2 (для разработчика)
В старых версиях модуля (bizproc до версии 16.0.2) данное условие может быть применимо только после дополнительных настроек модуля и только для Универсальных списков и бизнес-процессов Новостей.
Важно: указанный ниже способ не подходит для бизнес-процессов CRM и Диска.
Для того, чтобы можно было использовать данный тип условия, нужна реализация на стороне модуля, который работает с процессом. При старте процесса необходимо передавать массив изменившихся полей через параметр CBPDocument::PARAM_MODIFIED_DOCUMENT_FIELDS:
А для того, чтобы новое условие появилось в редакторе для настройки, необходимо реализовать в документе его поддержку:
public static function isFeatureEnabled($documentType, $feature)
{
return in_array($feature, array(\CBPDocumentService::FEATURE_MARK_MODIFIED_FIELDS));
}
Истина
Ветка действий будет выполнена сразу. Это условие выполняется всегда.
Описание условий
В таблице приведено описание всех вариантов условий с примерами.
Проверяет, являются ли указанные значения одинаковыми. Если они равны, то выполняется ветка условия.
С помощью условия проверим, совпадает ли пользователь, запустивший бизнес-процесс, с ответственным в сделке:
Тип условия: Поле документа
Поле документа: Ответственный
Условие: равно
Значение: Автор
Не равно
Проверяет, являются ли указанные значения разными. Если они не равны, то выполняется ветка условия.
С помощью условия проверим не равна ли текущая стадия сделки стадии «Финальный счёт»:
Тип условия: Поле документа
Поле документа: Стадия сделки
Условие: не равно
Значение: Финальный счёт
Больше
Сравнивает указанные значения между собой. Если первое значение больше второго, то выполняется ветка условия.
Это аналогично записи Var1 > Var2.
Предположим, что при сумме товаров в сделке более 100 тыс. рублей (включительно) мы хотим менять ответственного на ведущего менеджера. Проверим соответствие суммы условием:
Тип условия: Поле документа
Поле документа: Сумма
Условие: больше
Значение: 99999
Не меньше
Сравнивает указанные значения между собой. Если первое значение больше или равно второму, то выполняется ветка условия.
Это аналогично записи Var1 >= Var2.
Решим предыдущую задачу другим способом:
Тип условия: Поле документа
Поле документа: Сумма
Условие: не меньше
Значение: 100000
Меньше
Сравнивает указанные значения между собой. Если первое значение меньше второго, то выполняется ветка условия.
Это аналогично записи Var1 < Var2.
Представим, что с 01.06.23 мы изменили правила подготовки документов по сделке. Какие документы готовить, старые или новые, проверим условием по дате начала сделки. Готовим по старому алгоритму, если:
Тип условия: Поле документа
Поле документа: Дата начала
Условие: меньше
Значение: 01.06.23
Не больше
Сравнивает указанные значения между собой. Если первое значение меньше или равно второму, то выполняется ветка условия.
Это аналогично записи Var1 <= Var2.
Решим предыдущую задачу другим способом:
Тип условия: Поле документа
Поле документа: Дата начала
Условие: не больше
Значение: 31.05.23
Содержится в
Проверяет, содержится ли первое значение во втором. Если содержится, то выполняется ветка условия.
Когда значение переменной или поля — единственное, условие будет верным и в случае с подстрокой (например, «Ябл» содержится в «Яблоко»). Но для множественных переменных, учитывается только полное совпадение. К примеру для множественной переменной Var1 с тремя значениями: Яблоко, Груша, Персик:
Условие «Персик» содержится в Var1 — верное;
Условие «Пер» содержится в Var1 — неверное.
Условие чувствительно к регистру. Если переменная содержит «Персик» с большой буквы, а в условии указано «персик» с маленькой, то такое условие будет считаться неверным.
Представим, что мы хотим реализовать отдельную ветку бизнес-процесса если в сделке есть определённый товар. Тогда мы можем записать в переменную Variable1 название этого товара и проверить, содержится ли он в товарах сделки:
Тип условия: Смешанное
Источник: Переменные: Variable1
Условие: cодержится в
Значение: {{Товарные позиции (текст)}}
Не содержится в
Проверяет, не содержится ли первое значение во втором. Если не содержится, то выполняется ветка условия.
Особенности работы аналогичны условию Содержится в.
Пусть нам понадобилось проверять, является ли наблюдателем за сделкой пользователь, запустивший бизнес-процесс. И если нет — то его надо добавить в наблюдатели. Перед конструкцией «Условие» сохраним в переменную Author этого
пользователя
Значение «Автор» из формы «Вставка значения».
. А затем зададим параметры условия:
Тип условия: Значение переменной
Свойство или переменная: Author
Условие: не cодержится в
Значение: {{Наблюдатели}}
Содержит
Проверяет, содержится ли второе значение в первом. Если содержится, то выполняется ветка условия.
Оно работает в том числе по подстроке. Если у вас есть множественная переменная с тремя значениями: Яблоко, Груша, Персик, то условие «содержит» для слова «Пер» будет считаться верным.
Условие чувствительно к регистру. Если переменная содержит «Персик» с большой буквы, а в условии указано «пер» с маленькой, то такое условие будет считаться неверным.
Предположим, вы настроили интеграцию интернет-магазина на «1С-Битрикс: Управление сайтом» с Битрикс24. Теперь заказы из магазина приходят в Б24 в виде сделок с автоматически формируемыми названиями Eshop0 #1, Eshop0 #2 и т.д. Создадим условие, которое будет проверять содержится ли в названии сделки слово «Eshop», чтобы потом переносить такие сделки в другую воронку:
Тип условия: Поле документа
Поле документа: Название
Условие: содержит
Значение: Eshop
Не содержит
Проверяет, не содержится ли второе значение в первом. Если не содержится, то выполняется ветка условия.
Вы постоянно тестируете разные сценарии на специально созданных тестовых сделках. В названиях таких сделок есть слова «тест» или «тестовая». Чтобы шаблон пропускал такие сделки используем условие:
Тип условия: Поле документа
Поле документа: Название
Условие: не содержит
Значение: тест
Заполнено
Ветка выполнится, если значение заполнено (не пустое).
В сделках есть поле Комментарий. Представим, что мы хотим отправлять текст этого комментария в уведомлении, если в этом поле есть текст. Если оно пустое — то комментарий не должен быть отправлен. Используем условие, в ветке которого затем настроим уведомление:
Тип условия: Поле документа
Поле документа: Комментарий
Условие: заполнено
Не заполнено
Ветка выполнится, если значение не заполнено (пустое).
Допустим, в карточке сделки добавлено специальное пользовательское поле для отметок об особенностях сделки «Важно». Если поле не заполнено — сделка обрабатывается автоматически и переходит на следующую стадию, а если заполнено — отправляется на ручную обработку старшему менеджеру. Можно разветвить процесс таким условием:
Тип условия: Поле документа
Поле документа: Важно
Условие: не заполнено
Было изменено
Если бизнес-процесс настроен на запуск при изменении документа, то становится возможно определять внутри него измененные поля. Если поле изменено — ветка условия выполняется.
Работает только для типа условия «Поле документа» в бизнес-процессах Универсальных списков и Новостей.
Пусть список клиентов на портале ведётся с помощью универсальных списков (Сервисы > Списки). Мы хотим получать уведомление, если кто-то изменит название компании. Для этого создадим шаблон бизнес-процесса, запускающийся при изменении элемента списка, и в условии укажем проверку на изменение этого поля:
Тип условия: Поле документа
Поле документа: Название компании
Условие: было изменено
Между
Условие выполнится, если значение попадает в заданный промежуток / период времени (включая крайние значения).
Доступно с версии модуля 23.400.0 для полей / переменных типа «Число» или «Дата и время».
Например, в шаблоне бизнес-процесса необходимо учесть отдельный сценарий для всех сделок, созданных в 2022 году. Используем условие
между
:
Тип условия: Поле документа
Поле документа: Дата создания элемента
Условие: между
Значение 1: 01.01.2022 00:00:00
Значение 2: 31.12.2022 23:59:59
Подробнее об И/ИЛИ
Повторим: При выборе И ветка условий будет исполняться при выполнении обоих условий, а при ИЛИ — любого из указанных.
Простое пояснение логики без привязки к бизнес-процессам
Условие сработает, если в корзине есть яблоко И груша.
Что в корзине?
Условие сработает?
Почему?
Персик, яблоко
Нет
Нет груши
Персик, яблоко, груша
Да
Есть и яблоко, и груша
Груша
Нет
Нет яблока
Условие сработает, если в корзине есть яблоко ИЛИ груша.
Что в корзине?
Условие сработает?
Почему?
Персик, яблоко
Да
Есть яблоко
Персик, яблоко, груша
Да
Есть яблоко/груша
Груша
Да
Есть груша
Персик, виноград
Нет
Нет ни груши, ни яблока
Посмотрим пример для конструкции Условие. Допустим у нас есть шаблон бизнес-процесса, в котором по условию определяется предоставить услугу платно или бесплатно. Услуга будет предоставлена платно если поле Комментарий
сделки не содержит слова: Благотворительность и Подарок. При составлении условия возникает вопрос что использовать: И или ИЛИ.
Условие ИЛИ
Условие И
В зависимости от того, что будет установлено в условии, результаты получатся разными:
Как заполнено поле Комментарий?
Результат ИЛИ
Результат И
Не содержит оба слова
Платно
Платно
Содержит одно слово из указанных
Платно
Бесплатно
Есть оба слова
Бесплатно
Бесплатно
Как видим, разница между условиями проявляется когда в комментарии содержится одно слово из двух. В случае с условием ИЛИ — для выполнения условия достаточно, чтобы не содержалось только одно из двух слов, что не соответствует нашей задаче. Аналогично происходит с любым количеством слов.
Отдельное внимание обратим на условие не равно. Если вы хотите сделать проверку неравенства поля нескольким значениям, то есть смысл использовать только И. В случае использования ИЛИ, условие всегда будет истинным, так как поле окажется всегда не равно одному из значений.
Если несколько условий
При использовании нескольких условий и одновременно сравнений И и ИЛИ, приоритет будет у И. В виде формулы это можно представить так:
(УСЛ1 И УСЛ2) ИЛИ (УСЛ3 И УСЛ4)
Мы стараемся сделать документацию понятнее и доступнее, и Ваше мнение важно для нас