Любой нетривиальный бизнес-процесс Битрикс24 хранит данные в трёх типах контейнеров: переменные, константы и параметры. Путаница между ними — самая частая причина, почему процесс «не видит» нужное значение. Разберём назначение каждого и правила вставки значений.
Три типа данных и их роли
В дизайнере бизнес-процессов Битрикс24 данные разложены по трём хранилищам, у каждого своя область видимости и момент жизни. Понимание разницы избавляет от 90% ошибок «пустого значения».
| Тип | Когда задаётся | Можно менять в ходе процесса | Назначение |
|---|---|---|---|
| Константа | При настройке шаблона | Нет | Неизменные настройки: email руководителя, лимит суммы |
| Параметр | При запуске процесса | Нет | Входные данные от инициатора |
| Переменная | В любой момент выполнения | Да | Рабочее хранилище: счётчики, промежуточные результаты |
Все три объявляются в дизайнере через кнопку Параметры процесса на верхней панели, где есть отдельные вкладки «Параметры», «Переменные» и «Константы».
Переменные: рабочая память процесса
Переменная — это ячейка, в которую процесс пишет и из которой читает по ходу выполнения. Именно переменные меняются действием «Изменение переменных» и служат счётчиками циклов, флагами и накопителями.
- объявляются с именем, типом и значением по умолчанию;
- тип выбирают из стандартных: строка, число, дата/время, да/нет, пользователь, привязка к разделу;
- значение задаётся действием «Изменение переменных» или результатом другого действия;
- видны только внутри своего экземпляра процесса.
Типичный сценарий — счётчик кругов согласования: заводим переменную Счётчик типа «Целое число», на каждом круге увеличиваем и сравниваем с лимитом.
Константы: настройки без правки шаблона
Константа — это значение, которое одинаково для всех запусков процесса и не меняется в ходе выполнения, но которое удобно вынести отдельно, чтобы не искать по всему шаблону. Классические примеры — адрес почты руководителя, пороговая сумма для усиленного согласования, срок в днях.
Преимущество констант в том, что при изменении бизнес-правила (например, порог согласования вырос с 100 000 до 300 000) правится одно значение, а не десяток действий. Константы задаются на вкладке «Константы» и вставляются в действия так же, как поля.
Параметры: ввод данных при запуске
Параметры — это поля, которые процесс запрашивает у сотрудника в момент ручного запуска. Для процесса «Заявка на командировку» параметрами будут город, даты, цель поездки. Для каждого параметра задают тип, обязательность и подсказку.
- объявляем параметр на вкладке «Параметры» с типом и флагом «Обязательный»;
- при запуске Битрикс24 показывает форму со всеми параметрами;
- внутри процесса значение доступно только для чтения — его нельзя перезаписать.
Если процесс запускается автоматически (по событию или роботом), параметры передаются программно, а не через форму. Поэтому для автозапускаемых процессов параметры делают необязательными или задают значения по умолчанию.
Как вставлять значения в действия
Любое поле в действии дизайнера принимает не только текст, но и ссылку на данные. Вставку делают через кнопку «Вставить значение» (значок с тремя точками рядом с полем) — открывается селектор, где сгруппированы документ, параметры, переменные, константы и дополнительные результаты.
В тексте ссылки выглядят как фигурные скобки с префиксом источника:
{=Variable:Schetchik}— переменная;{=Constant:LimitSummy}— константа;{=Template:Gorod}— параметр шаблона;{=Document:PROPERTY_NAME}— поле документа.
В полях можно смешивать текст и ссылки: строка Заявка №{=Document:ID} на сумму {=Document:SUM} соберётся в готовый текст при выполнении. Это же используется в теме письма, тексте задачи и условиях.
Выражения и функции над данными
Помимо простой подстановки, поля дизайнера понимают выражения — вычисления с функциями. Выражение начинается с = и может складывать, сравнивать и преобразовывать значения.
Полезные функции:
| Функция | Что делает |
|---|---|
dateadd(date, "1 day") | Прибавляет период к дате |
if(cond, a, b) | Условный выбор значения |
min() / max() | Минимум и максимум |
substr() / strlen() | Операции над строкой |
Например, крайний срок задачи можно вычислить прямо в поле: =dateadd({=Document:DATE_CREATE}, "3 days"). Так дата считается автоматически без отдельного действия «Изменение переменных».
Итог
Три контейнера данных решают разные задачи: параметры принимают ввод при запуске, константы хранят неизменные настройки, а переменные служат рабочей памятью, которую процесс меняет по ходу. Правильно разложив данные по этим ролям и используя «Вставить значение» вместо ручного ввода, вы получаете читаемый и легко изменяемый шаблон.
Мы в B2Bsite проектируем бизнес-процессы так, чтобы бизнес-правила были вынесены в константы и параметры, а логика оставалась прозрачной для последующей поддержки. Если процесс на портале превратился в клубок «магических значений», поможем его переработать и задокументировать.
Частые вопросы
Чем переменная отличается от константы?
Переменную процесс может менять в ходе выполнения — это его рабочая память. Константа задаётся один раз при настройке шаблона и остаётся неизменной на всём протяжении процесса.
Можно ли изменить параметр внутри процесса?
Нет. Параметр доступен только для чтения: его значение задаётся при запуске сотрудником или программно и дальше не перезаписывается. Для изменяемых данных используйте переменные.
Как вставить значение поля в текст письма?
Нажмите «Вставить значение» рядом с полем и выберите нужный источник — документ, переменную, константу или параметр. В тексте это отобразится как ссылка в фигурных скобках.
Где объявляются переменные и константы?
На верхней панели дизайнера есть кнопка «Параметры процесса» с вкладками «Параметры», «Переменные» и «Константы». Там задают имя, тип и значение по умолчанию.
Почему переменная оказалась пустой?
Чаще всего у неё не задано корректное значение по умолчанию либо действие «Изменение переменных» стоит после места, где значение уже читается. Проверьте порядок действий и стартовое значение.
Как посчитать дату через несколько дней?
Используйте выражение с функцией dateadd прямо в поле, например =dateadd({=Document:DATE_CREATE}, "3 days"). Отдельное действие для этого не нужно.
Что вставлять для автозапускаемого процесса вместо формы параметров?
Для процессов, стартующих автоматически, форма параметров не показывается. Значения передаются программно, поэтому делайте параметры необязательными или задавайте значения по умолчанию.
Зачем выносить пороги и лимиты в константы?
Чтобы при изменении бизнес-правила править одно значение, а не искать его по десяткам условий. Константы с понятными именами упрощают поддержку шаблона.
Поможем с настройкой и поддержкой Битрикс24
Поможем с настройкой, доработкой и поддержкой Битрикс24.