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

Чем переменная отличается от параметра и константы?

Три сущности в настройках шаблона. Параметры заполняются в момент запуска — тем, кто стартует процесс (например, «причина скидки»); внутри процесса они только читаются. Переменные живут внутри: процесс пишет и перечитывает их по ходу — сюда складывают результаты действий. Константы задаются один раз в шаблоне (порог суммы, ID отдела) и меняются без правки логики. Практическое правило: всё, что спрашиваете у человека — параметр; всё, что считаете по ходу — переменная; все «магические числа» — константы, иначе при смене порога придётся искать его по всем условиям.

Как подставлять значения в действия?

В любом поле действия работает «Вставить значение» — выбор из дерева: поля документа (сделки, лида), параметры, переменные, константы, результаты предыдущих действий и системные значения. Под капотом это шаблоны вида {=Document:TITLE} или {=Variable:total}. Два подводных камня: множественные поля подставляются списком через запятую — для поэлементной работы их сначала надо разобрать; а пустое значение подставляется как пустая строка, не как «ничего» — условие «равно пусто» и «равно ""» в Битрикс24 не всегда одно и то же, проверяйте на тестовой записи.

Как обрабатывать строки и выбирать значения по условию?

Штатных строковых функций в дизайнере мало, и здесь выручают роботы-однострочники. Выбор по условию без ветки «Условие» на два блока: тернарный оператор возвращает одно из двух значений по сравнению — «если скидка пустая, взять 0» решается одним действием. Достать фрагмент из текста — телефон из комментария, номер счёта из письма: «Извлечь по регулярному выражению». Разобрать список на элементы — теги через запятую, ФИО на части: «Разбить строку по разделителю» возвращает массив и количество частей, дальше элементы доступны по индексу.

Как достать значение из JSON-ответа?

Если процесс ходит во внешние системы HTTP-запросом, ответ приходит строкой JSON — а нужно одно поле из вложенной структуры. Робот «Извлечь значение из JSON по пути» принимает строку и путь вида data.items.0.price и возвращает значение в переменную. Связка «HTTP-запрос → JSON по пути → записать в поле» — стандартный паттерн интеграции без кода: курс из внешнего API, статус заказа из учётной системы, остатки со склада.

Почему переменная пустая: чек-лист

Четыре частые причины. Действие, которое должно было заполнить переменную, не выполнилось — смотрите журнал процесса, ветка могла обойти его стороной. Тип не совпал: в переменную типа «число» записали строку с пробелом — значение молча потерялось. Результат действия взят не из того блока: при копировании блоков подстановка продолжает указывать на старый. Множественное значение читается как одиночное: вместо элемента подставился весь список. Правило отладки: после каждого важного действия временно пишите переменную в комментарий карточки — увидите реальное значение на каждом шаге.

Итог

Переменные — это память процесса, и дисциплина в них окупается: параметры для входа, константы для порогов, переменные для результатов. А обработку значений — выбор по условию, разбор строк и JSON — закрывают роботы-однострочники из каталога Роботеки, чтобы не городить ветвления на ровном месте.