Если: условия
Блок Если решает, выполнять ли действия сценария для конкретного заказа. Условия собираются в дерево: отдельные строки-условия объединяются в группы, группы можно вкладывать друг в друга, а для оплат, отгрузок и товаров есть специальные блоки.

Пустой блок «Если» означает «для любого заказа». Это нормально для сценариев, которые должны срабатывать на каждое событие, — например, «каждому новому заказу назначить ответственного».
Строка условия
Каждое условие — три части: поле → оператор → значение.
- Поле выбирается из списка с поиском. Поля сгруппированы: «Заказ», «Суммы», «Даты», «Покупатель», «Тексты», свойства заказа по типам плательщика.
- Оператор — список зависит от типа поля: у чисел есть «больше» и «в диапазоне», у списков — «одно из», у дат — «прошло больше».
- Значение — редактор подстраивается под поле: число, текст, дата, переключатель «Да / Нет», выбор из списка статусов, служб доставки, товаров, разделов каталога.

Для больших справочников (товары, разделы каталога, покупатели, местоположения) значения выбираются в отдельном окне с поиском по названию — кнопка Изменить… под полем.
Группы: И, ИЛИ, НЕ
Условия внутри группы связываются переключателем в её шапке:
| Режим | Группа истинна, когда |
|---|---|
| И | выполнены все условия |
| ИЛИ | выполнено хотя бы одно |
| НЕ + И | не выполнено хотя бы одно |
| НЕ + ИЛИ | не выполнено ни одно из условий |
Подпись рядом с переключателем всегда говорит, как сейчас читается группа.
Кнопки под группой:
- + Условие — добавить строку.
- + Группа — вложенная группа со своим режимом И / ИЛИ. Так собираются правила вида «тип плательщика — физлицо и (сумма ≥ 50 000 или (первый заказ и сумма ≥ 20 000))». Разбор такого правила — в примере «Крупный заказ — на проверку менеджеру».
- Блок: Оплата / Отгрузка / Позиция корзины — условие по записям заказа, см. ниже.
Вложенность ограничена тремя уровнями — этого хватает для любых практических правил и сохраняет их читаемыми.
Блоки по оплатам, отгрузкам и корзине
В заказе может быть несколько оплат, несколько отгрузок и сколько угодно позиций корзины. Чтобы проверить, например, «есть ли в заказе товар из раздела „Крупная техника“», используется блок:
У любой записи области «Позиция корзины» выполнено: Раздел каталога (с вложенными) одно из «Крупная техника»
Режим блока:
| Режим | Блок истинен, когда |
|---|---|
| У любой | хотя бы одна запись подходит |
| У всех | все записи подходят |
| Ни у одной | ни одна запись не подходит |
Внутри блока — своя группа условий, и в ней доступны только поля этой области. Важная деталь: все условия внутри блока проверяются на одной и той же записи. Блок «у любой позиции: товар = X и количество = 2» найдёт заказ, где товара X ровно 2 штуки, а не заказ, где есть товар X и какая-то другая позиция в количестве 2.
Для простых проверок есть готовые поля уровня заказа: «Платёжные системы оплат заказа», «Службы доставки отгрузок заказа», «Позиций в корзине», «Вес заказа». Блок нужен, когда условие складывается из нескольких полей одной записи или когда важно «у всех» / «ни у одной».
Поля
Заказ
| Поле | Тип |
|---|---|
| Статус заказа | список статусов |
| Тип плательщика | список |
| Заказ оплачен | да / нет |
| Заказ отменён | да / нет |
| Платёжные системы оплат заказа | список (все оплаты заказа) |
| Службы доставки отгрузок заказа | список (все отгрузки заказа) |
| Доставка разрешена | да / нет |
| Заказ отгружен | да / нет |
| Ответственный | список пользователей |
| Сайт заказа | список сайтов |
| Откуда пришло сохранение | Сайт (покупатель) · Админка · Обмен с 1С · Другое (агент, API) |
| Заказ из внешней системы | да / нет |
| Вес заказа, г | число |
| Позиций в корзине | число |
| Единиц товара в корзине | число |
Откуда пришло сохранение определяется по запросу, в котором сохраняется заказ, а не по тому, где заказ был создан:
- Обмен с 1С — запрос к скрипту обмена
1c_exchange.php. - Админка — страницы
/bitrix/admin/и штатные инструменты админки. - Другое (агент, API) — консольный запуск и cron-агенты.
- Сайт (покупатель) — любой другой запрос к сайту. Сюда же попадают REST API, вебхуки и агенты, которые выполняются на хитах.
Суммы
| Поле | Тип |
|---|---|
| Сумма заказа | число |
| Стоимость доставки | число |
| Стоимость товаров | число |
| Оплачено | число |
| Сумма скидки | число |
| Валюта | список |
| Купоны | текст |
Даты
Дата создания, Дата изменения, Дата смены статуса, Дата оплаты, Дата отмены — все с датой и временем.
Покупатель
| Поле | Тип |
|---|---|
| Покупатель | список пользователей |
| Группы покупателя | список групп |
| Первый заказ покупателя | да / нет |
| Прошлых заказов покупателя | число |
Тексты
Комментарий покупателя, Комментарий менеджера, Причина отмены, Внешний код заказа, Код заказа в 1С.
Свойства заказа
Все активные свойства заказа — телефон, адрес, ИНН, свои флаги и списки. Они сгруппированы по типам плательщика («Свойства: Физическое лицо», «Свойства: Юридическое лицо»). Тип значения берётся из типа свойства: строка, число, «Да / Нет», список, дата, местоположение, файл.
Если у типа плательщика заказа такого свойства нет, значение считается пустым: условие «не заполнено» для него истинно, остальные — ложны.
Оплата (внутри блока)
Платёжная система, Сумма оплаты, Оплата оплачена, Дата оплаты, Оплата возвращена.
Отгрузка (внутри блока)
Служба доставки, Статус отгрузки, Доставка разрешена, Отгружена, Трек-номер, Стоимость доставки отгрузки. Системная отгрузка, которую Битрикс создаёт служебно, в блок не попадает.
Позиция корзины (внутри блока)
| Поле | Тип |
|---|---|
| Товар | выбор из каталога |
| Раздел каталога (с вложенными) | выбор раздела: подходит товар из раздела и всех его подразделов |
| Название позиции | текст |
| Количество | число |
| Цена за единицу | число |
| Сумма позиции | число |
Операторы
| Оператор | Для каких полей | Как работает |
|---|---|---|
| равно / не равно | текст, число; «равно» — и для «Да / Нет» | Точное совпадение |
| содержит / не содержит / начинается с | текст | Поиск подстроки |
| больше, больше или равно, меньше, меньше или равно | число | Сравнение |
| в диапазоне | число, дата | Значение между «от» и «до» |
| раньше / позже | дата | Сравнение с указанной датой |
| прошло больше / прошло меньше | дата | Сколько времени прошло от даты до момента проверки — в часах или днях |
| одно из / ни одно из | списки, местоположение | Значение входит (не входит) в выбранные варианты. У списочных полей со множеством значений (платёжные системы, службы доставки, группы покупателя) «одно из» истинно, если совпало хотя бы одно |
| входит в (с вложенностью) | местоположение | Местоположение совпадает с выбранным или лежит внутри него: «Московская область» захватывает все её города |
| заполнено / не заполнено | все, кроме «Да / Нет» | Есть ли значение |
Сроки: «прошло больше»
Условие «Дата создания — прошло больше — 3 дня» истинно, когда с создания заказа прошло больше трёх суток. Срок задаётся числом и единицей — часы или дни. Такие условия естественно ставить в сценарии по расписанию: при сохранении заказа проверка сработает, только если заказ как раз в этот момент сохранили.
Условия на изменение
Для полей, значение которых модуль запоминает до сохранения (статус, «оплачен», «отменён», «доставка разрешена», «отгружен», ответственный), есть операторы истории:
| Оператор | Истинно, когда |
|---|---|
| изменилось | значение при этом сохранении стало другим |
| стало | новое значение — одно из выбранных |
| было | прежнее значение — одно из выбранных |
Пример: «Статус заказа было „Принят, ожидается оплата“» — сценарий сработает только на том сохранении, при котором заказ ушёл из этого статуса.
Условия на изменение имеют смысл только при запуске по сохранению заказа. При ручном запуске и по расписанию сравнивать не с чем, поэтому они считаются невыполненными — проверка на заказе прямо об этом предупреждает.