Штатные средства Битрикс24 покрывают простые условия: робот на стадии срабатывает по фильтру, блок «Условие» в дизайнере бизнес-процессов разводит ветки. Но логика «если сумма больше 100 000 и источник — сайт, то одно, иначе другое» превращается в дерево вложенных развилок. Три робота Роботеки сводят такие проверки к одному действию: «Сложное условие» объединяет до четырёх проверок с AND/OR/NOT, «Тернарный выбор» возвращает одно из двух значений, «Проверить заполненность поля» отвечает Y/N про любое поле CRM.
Почему штатных условий не хватает?
У робота на стадии можно задать условие запуска, но это фильтр: сработать или нет, без сложной логики внутри. В дизайнере бизнес-процессов есть блок «Условие», однако комбинация «(A и B) или (C и D)» собирается только вложенными развилками — две-три ветки, которые тяжело читать и менять. Главный источник ошибок — дублирование действий по веткам: правите текст уведомления в одной и забываете во второй. Удобнее посчитать всё условие одним действием, получить признак Y/N и оставить в схеме одну развилку. Как устроены сами процессы — в обзоре бизнес-процессов Битрикс24.
Как объединить несколько проверок: AND, OR, NOT?
Робот «Сложное условие (AND / OR / NOT)» принимает в плоском режиме до четырёх пар «значение A — оператор — значение B» и логику объединения: AND — все должны выполняться, OR — достаточно одной. Для произвольной вложенности есть JSON-режим: поле «условия в JSON» вида {"and":[{"a":"…","op":"eq","b":"…"},{"or":[…]}]} имеет приоритет над плоским. Выход один — «Результат (Y/N)». Куда записать: обычно сразу после робота ставят штатное «Условие» с проверкой «результат равен Y» — одна развилка вместо дерева. Если в плоской паре оператор не указан, она просто пропускается, поэтому заполнять все четыре строки не обязательно. Пример: перед переводом сделки на стадию «Согласование» проверить, что сумма больше порога и источник — сайт; при N сделка возвращается менеджеру с уведомлением.
Какие операторы доступны и почему eq, а не ==?
Операторы задаются словесными алиасами: eq, neq, gt, lt, gte, lte — равно, не равно, больше, меньше и нестрогие сравнения; плюс contains, not_contains, starts_with, ends_with, is_empty, not_empty и matches для регулярных выражений. Символьные формы == и > в полях робота писать не стоит: движок бизнес-процессов воспринимает такое значение как выражение и вычисляет его ещё до запуска робота — до проверки доходит уже результат вычисления, а не оператор. Числа сравниваются как числа: 10 больше 9, хотя как строка «10» меньше. Строки по умолчанию сравниваются без учёта регистра — для строгого сравнения есть отдельный признак. Ещё один нюанс Битрикс24: незаполненное поле подставляется пустой строкой, а не «ничем», поэтому пустоту проверяют оператором is_empty, а не сравнением с пустым значением.
Как выбрать одно из двух значений без веток?
«Тернарный выбор (если-то-иначе)» — конструкция «если — то — иначе» одним действием. Вход: значение A, оператор, значение B (для is_empty и not_empty не нужно) и два варианта ответа — «вернуть, если истинно» и «вернуть, если ложно». Выхода два: выбранное значение и признак «условие выполнено» Y/N. Результат записывают в поле сделки, текст уведомления или переменную процесса. Пример: если скидка больше 20 — подставить в письмо согласующего руководителя, иначе менеджера. Один робот заменяет развилку с двумя почти одинаковыми действиями, которые иначе пришлось бы поддерживать парой. Признак Y/N при этом остаётся доступным отдельно — по нему можно дополнительно развести процесс, не пересчитывая условие второй раз.
Как проверить, что поле заполнено?
«Проверить заполненность поля» закрывает самый частый частный случай условия. Вход: тип сущности — deal, contact, company или lead, её ID и код поля. Выхода два: признак «поле заполнено» Y/N и текущее значение поля; множественные значения склеиваются через запятую. Пример: лид не переводится в работу без телефона; сделка не уходит на отгрузку с пустым полем «Адрес доставки». Признак сравнивается в штатном условии, а значение поля можно тут же подставить в уведомление ответственному — отдельный запрос к карточке не нужен, робот уже вернул и факт, и содержимое.
Итог
Несколько проверок сразу — «Сложное условие»; выбор одного из двух значений — «Тернарный выбор»; контроль заполненности — «Проверить заполненность поля». Операторы в полях пишите словами: eq, gt, lt. Эти и соседние роботы управления логикой собраны в категории управление процессом. Не нашли нужного — опишите задачу, мы сделаем робота бесплатно и добавим в общий каталог.