Условие

Урок 87 из 250
Автор: Марина Павлова
Сложность урока:
1 уровень - интуитивно все понятно из интерфейса, но почитать стоит.
1 из 5
Просмотров: 54681
Дата изменения: 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 (для разработчика)


  • Истина

    Ветка действий будет выполнена сразу. Это условие выполняется всегда.

  Описание условий

В таблице приведено описание всех вариантов условий с примерами.

УсловиеОписаниеПример
РавноПроверяет, являются ли указанные значения одинаковыми. Если они равны, то выполняется ветка условия.С помощью условия проверим, совпадает ли пользователь, запустивший бизнес-процесс, с ответственным в сделке:
Тип условия: Поле документа
Поле документа: Ответственный
Условие: равно
Значение: Автор
Не равноПроверяет, являются ли указанные значения разными. Если они не равны, то выполняется ветка условия. С помощью условия проверим не равна ли текущая стадия сделки стадии «Финальный счёт»:
Тип условия: Поле документа
Поле документа: Стадия сделки
Условие: не равно
Значение: Финальный счёт
БольшеСравнивает указанные значения между собой. Если первое значение больше второго, то выполняется ветка условия.

Это аналогично записи 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)



Нам жаль это слышать… Но мы постараемся быть лучше!

Мы благодарны Вам за помощь в улучшении документации.

Спасибо, мы рады что смогли помочь Вам. Ниже Вы можете оставить свой отзыв или пожелание :)
Мы стараемся сделать документацию понятнее и доступнее,
и Ваше мнение важно для нас
Курсы разработаны в компании «1С-Битрикс»