Перейти к основному содержимому

Если: условия

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

Блок «Если» в редакторе сценария

Условий нет — срабатывает всегда

Пустой блок «Если» означает «для любого заказа». Это нормально для сценариев, которые должны срабатывать на каждое событие, — например, «каждому новому заказу назначить ответственного».

Строка условия​

Каждое условие — три части: поле → оператор → значение.

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

Выбор поля условия с поиском

Для больших справочников (товары, разделы каталога, покупатели, местоположения) значения выбираются в отдельном окне с поиском по названию — кнопка Изменить… под полем.

Группы: И, ИЛИ, НЕ​

Условия внутри группы связываются переключателем в её шапке:

РежимГруппа истинна, когда
Ивыполнены все условия
ИЛИвыполнено хотя бы одно
НЕ + Ине выполнено хотя бы одно
НЕ + ИЛИне выполнено ни одно из условий

Подпись рядом с переключателем всегда говорит, как сейчас читается группа.

Кнопки под группой:

  • + Условие — добавить строку.
  • + Группа — вложенная группа со своим режимом И / ИЛИ. Так собираются правила вида «тип плательщика — физлицо и (сумма ≥ 50 000 или (первый заказ и сумма ≥ 20 000))». Разбор такого правила — в примере «Крупный заказ — на проверку менеджеру».
  • Блок: Оплата / Отгрузка / Позиция корзины — условие по записям заказа, см. ниже.

Вложенность ограничена тремя уровнями — этого хватает для любых практических правил и сохраняет их читаемыми.

Блоки по оплатам, отгрузкам и корзине​

В заказе может быть несколько оплат, несколько отгрузок и сколько угодно позиций корзины. Чтобы проверить, например, «есть ли в заказе товар из раздела „Крупная техника“», используется блок:

У любой записи области «Позиция корзины» выполнено: Раздел каталога (с вложенными) одно из «Крупная техника»

Режим блока:

РежимБлок истинен, когда
У любойхотя бы одна запись подходит
У всехвсе записи подходят
Ни у однойни одна запись не подходит

Внутри блока — своя группа условий, и в ней доступны только поля этой области. Важная деталь: все условия внутри блока проверяются на одной и той же записи. Блок «у любой позиции: товар = X и количество = 2» найдёт заказ, где товара X ровно 2 штуки, а не заказ, где есть товар X и какая-то другая позиция в количестве 2.

Поле заказа или блок?

Для простых проверок есть готовые поля уровня заказа: «Платёжные системы оплат заказа», «Службы доставки отгрузок заказа», «Позиций в корзине», «Вес заказа». Блок нужен, когда условие складывается из нескольких полей одной записи или когда важно «у всех» / «ни у одной».

Поля​

Заказ​

ПолеТип
Статус заказасписок статусов
Тип плательщикасписок
Заказ оплаченда / нет
Заказ отменёнда / нет
Платёжные системы оплат заказасписок (все оплаты заказа)
Службы доставки отгрузок заказасписок (все отгрузки заказа)
Доставка разрешенада / нет
Заказ отгруженда / нет
Ответственныйсписок пользователей
Сайт заказасписок сайтов
Откуда пришло сохранениеСайт (покупатель) · Админка · Обмен с 1С · Другое (агент, API)
Заказ из внешней системыда / нет
Вес заказа, гчисло
Позиций в корзинечисло
Единиц товара в корзинечисло

Откуда пришло сохранение определяется по запросу, в котором сохраняется заказ, а не по тому, где заказ был создан:

  • Обмен с 1С — запрос к скрипту обмена 1c_exchange.php.
  • Админка — страницы /bitrix/admin/ и штатные инструменты админки.
  • Другое (агент, API) — консольный запуск и cron-агенты.
  • Сайт (покупатель) — любой другой запрос к сайту. Сюда же попадают REST API, вебхуки и агенты, которые выполняются на хитах.

Суммы​

ПолеТип
Сумма заказачисло
Стоимость доставкичисло
Стоимость товаровчисло
Оплаченочисло
Сумма скидкичисло
Валютасписок
Купонытекст

Даты​

Дата создания, Дата изменения, Дата смены статуса, Дата оплаты, Дата отмены — все с датой и временем.

Покупатель​

ПолеТип
Покупательсписок пользователей
Группы покупателясписок групп
Первый заказ покупателяда / нет
Прошлых заказов покупателячисло

Тексты​

Комментарий покупателя, Комментарий менеджера, Причина отмены, Внешний код заказа, Код заказа в 1С.

Свойства заказа​

Все активные свойства заказа — телефон, адрес, ИНН, свои флаги и списки. Они сгруппированы по типам плательщика («Свойства: Физическое лицо», «Свойства: Юридическое лицо»). Тип значения берётся из типа свойства: строка, число, «Да / Нет», список, дата, местоположение, файл.

Если у типа плательщика заказа такого свойства нет, значение считается пустым: условие «не заполнено» для него истинно, остальные — ложны.

Оплата (внутри блока)​

Платёжная система, Сумма оплаты, Оплата оплачена, Дата оплаты, Оплата возвращена.

Отгрузка (внутри блока)​

Служба доставки, Статус отгрузки, Доставка разрешена, Отгружена, Трек-номер, Стоимость доставки отгрузки. Системная отгрузка, которую Битрикс создаёт служебно, в блок не попадает.

Позиция корзины (внутри блока)​

ПолеТип
Товарвыбор из каталога
Раздел каталога (с вложенными)выбор раздела: подходит товар из раздела и всех его подразделов
Название позициитекст
Количествочисло
Цена за единицучисло
Сумма позициичисло

Операторы​

ОператорДля каких полейКак работает
равно / не равнотекст, число; «равно» — и для «Да / Нет»Точное совпадение
содержит / не содержит / начинается стекстПоиск подстроки
больше, больше или равно, меньше, меньше или равночислоСравнение
в диапазонечисло, датаЗначение между «от» и «до»
раньше / позжедатаСравнение с указанной датой
прошло больше / прошло меньшедатаСколько времени прошло от даты до момента проверки — в часах или днях
одно из / ни одно изсписки, местоположениеЗначение входит (не входит) в выбранные варианты. У списочных полей со множеством значений (платёжные системы, службы доставки, группы покупателя) «одно из» истинно, если совпало хотя бы одно
входит в (с вложенностью)местоположениеМестоположение совпадает с выбранным или лежит внутри него: «Московская область» захватывает все её города
заполнено / не заполненовсе, кроме «Да / Нет»Есть ли значение

Сроки: «прошло больше»​

Условие «Дата создания — прошло больше — 3 дня» истинно, когда с создания заказа прошло больше трёх суток. Срок задаётся числом и единицей — часы или дни. Такие условия естественно ставить в сценарии по расписанию: при сохранении заказа проверка сработает, только если заказ как раз в этот момент сохранили.

Условия на изменение​

Для полей, значение которых модуль запоминает до сохранения (статус, «оплачен», «отменён», «доставка разрешена», «отгружен», ответственный), есть операторы истории:

ОператорИстинно, когда
изменилосьзначение при этом сохранении стало другим
сталоновое значение — одно из выбранных
былопрежнее значение — одно из выбранных

Пример: «Статус заказа было „Принят, ожидается оплата“» — сценарий сработает только на том сохранении, при котором заказ ушёл из этого статуса.

Только для события «Заказ сохранён»

Условия на изменение имеют смысл только при запуске по сохранению заказа. При ручном запуске и по расписанию сравнивать не с чем, поэтому они считаются невыполненными — проверка на заказе прямо об этом предупреждает.