Переменные бизнес-процессов Битрикс24: как передавать данные между шагами и не терять значения
Переменные бизнес-процессов Битрикс24 — это временные данные, которые можно менять после запуска процесса. Чтобы значения не терялись при ветвлении и повторном запуске, заведите карту переменных: имя, тип, источник, шаг записи, шаг чтения. Проверяйте передачу на копии шаблона с включённым журналом отладки.
Что такое переменные бизнес-процессов Битрикс24 и чем они отличаются от параметров и констант
В шаблоне бизнес-процесса есть три сущности: параметры, переменные и константы. Параметры задаются до запуска (сотрудник вводит их при старте) и после этого неизменны. Константы задаются администратором заранее и не меняются в ходе процесса. Переменные — данные, которые можно изменять после запуска процесса. Например, в процессе согласования коммерческого предложения сумма или ответственный менеджер могут быть переменными, а имя клиента и срок действия предложения — параметрами. Константой может быть роль главного бухгалтера, закреплённая за конкретным сотрудником.
Такое разделение помогает не путать входные данные с промежуточными. Если значение должно быть известно до старта и оставаться неизменным, используйте параметр. Если оно фиксируется на всё время процесса — константу. Если меняется по ходу — переменную. Это влияет на то, где и как вы сможете подставить значение: в параметрах действий, в условиях ветвления, в уведомлениях.
При настройке шаблона в CRM администратор или сотрудник с правом изменять настройки CRM переходит в раздел Автоматизация > Бизнес-процессы > Процессы в CRM, выбирает элемент и добавляет шаблон. На вкладке Параметры шаблона заполняются основные сведения, затем вкладки Параметры, Переменные и Константы. Для каждой сущности указываются идентификатор, название, описание, тип, обязательность, множественность и значение по умолчанию. Идентификатор должен быть уникальным, чтобы не возникало дублей и путаницы.
Тип данных определяет доступные операции и формат отображения. От типа зависят применяемые модификаторы и вид значения в письмах или документах. Ошибка в выборе типа приводит к тому, что переменная не подставляется или выводится в техническом виде (например, ID вместо имени). Поэтому в карте переменных тип указывается точно.
Карта переменных: имя, тип, источник, шаг записи, шаг чтения
Карта переменных — это таблица, которая связывает каждую переменную с её ролью в процессе. Без неё легко получить ситуацию, когда значение записывается в одной ветке, а читается в другой, и оказывается пустым. Минимальный набор колонок: идентификатор, понятное название, тип, источник значения, шаг записи, шаг чтения, обязательность, значение по умолчанию.
Источником может быть параметр шаблона, поле документа, результат предыдущего действия, константа или ручной ввод сотрудника. Шаг записи — действие, где переменная получает значение. Шаг чтения — действие, где это значение используется: в условии, в тексте уведомления, в поле документа. Если шаг чтения находится в другой ветке, чем шаг записи, нужно убедиться, что ветка выполняется после записи.
Карту удобно вести рядом с шаблоном. При изменении процесса её обновляют. Если переменная больше не используется, её удаляют или помечают как архивную, чтобы не накапливать неиспользуемые сущности. Это снижает риск ошибок при повторном запуске и ручном вмешательстве.
В карте также стоит отметить, является ли переменная множественной. Множественные переменные позволяют хранить несколько значений, но при подстановке в текст нужно понимать, как они будут отображены. Если множественность не нужна, лучше её не включать, чтобы не усложнять логику и проверку.
Как связать переменную с полем сущности и не потерять значение
Связь переменной с полем сущности (сделки, контакта, компании, смарт-процесса) выполняется через форму «Вставка значения». В параметрах действий, параметрах шаблона и настройках статуса можно указать как собственный текст, так и подставить значение из переменной, поля документа, параметра или константы через форму «Вставка значения». Форма доступна в визуальном конструкторе бизнес-процесса.
Чтобы не потерять значение, сначала определите, где оно должно оказаться в итоге: в поле сделки, в уведомлении, в задаче. Затем настройте запись переменной в этом действии. Если значение приходит из поля документа, используйте соответствующую вставку. Если из результата предыдущего действия — проверьте, поддерживает ли это действие дополнительные результаты. Не все действия их предоставляют.
При подстановке в текст удобно использовать модификатор printable, который преобразует значение в понятную строку. Например, для переменной типа «пользователь» можно вывести только имя и фамилию без идентификатора и логина. Для даты — преобразовать в печатную форму. Если этого не сделать, в уведомлении может появиться техническое значение.
Если поле не отображается в форме «Вставка значения», проверьте его свойства: должна быть включена опция вывода на странице списка элементов. Это требование актуально для облачной версии при работе со смарт-процессами. Проверку следует выполнить до начала отладки.
Ветвление: почему переменная теряется в одной из веток
При ветвлении процесс идёт по одному из путей. Если переменная записывается только в одной ветке, то при выполнении другой ветки она останется пустой. Это одна из самых частых причин потери значений. Чтобы избежать этого, определите, должна ли переменная иметь значение по умолчанию. Если да, задайте его на вкладке переменных. Тогда даже при выполнении ветки без явной записи переменная будет содержать заготовленное значение.
Второй момент — порядок действий. Если условие ветвления читает переменную, которая записывается позже, значение будет пустым. Проверьте последовательность: сначала запись, потом чтение. В карте переменных шаг записи должен идти раньше шага чтения в рамках той же ветки.
Третий момент — вложенные условия. Если внутри одной ветки есть ещё одно ветвление, убедитесь, что переменная доступна на всех уровнях. Иногда удобнее вынести запись переменной в общее действие до развилки, чтобы она была гарантированно заполнена.
Четвёртый момент — множественные переменные. Если переменная множественная, при ветвлении можно случайно перезаписать или очистить список. Проверьте, не происходит ли этого в вашем шаблоне.
Повторный запуск и ручное вмешательство: что происходит со значениями
При повторном запуске переменные инициализируются значениями по умолчанию или остаются пустыми, если значение по умолчанию не задано. Предыдущие значения не сохраняются. Запуск процесса повторно для той же сущности может привести к потере данных из прошлого запуска.
Ручное вмешательство — изменение полей сотрудником во время выполнения процесса — тоже влияет на переменные. Если переменная связана с полем документа, изменение поля может не обновить переменную автоматически, если не настроена соответствующая запись. И наоборот, изменение переменной не всегда обновляет поле документа, если не настроена обратная запись.
Чтобы контролировать это, определите, какие переменные должны синхронизироваться с полями, а какие живут только внутри процесса. Для синхронизируемых переменных настройте запись в поле документа в нужном действии. Для внутренних переменных достаточно значения по умолчанию и явной записи.
При повторном запуске также стоит проверить, не накапливаются ли данные. Если переменная множественная и при каждом запуске в неё добавляется новое значение, список может расти, если не очищается в начале процесса. Если это не задумано, очищайте переменную в начале процесса или используйте параметр вместо переменной.
Таблица принятия решения: какой тип хранения выбрать
| Ситуация | Что выбрать | Почему | Где проверить | Ограничение |
|---|---|---|---|---|
| Данные известны до запуска и не меняются | Параметр | Вводится при старте, после запуска неизменен | Вкладка «Параметры» шаблона | Нельзя изменить в ходе процесса |
| Значение фиксировано на всё время процесса | Константа | Задаётся заранее, недоступна для изменения без прав | Вкладка «Константы» | Требует прав на изменение шаблона |
| Значение меняется по ходу процесса | Переменная | Можно изменять после запуска | Вкладка «Переменные» | При повторном запуске сбрасывается |
| Нужно несколько значений одного типа | Множественная переменная | Позволяет хранить список | Вкладка «Переменные», флаг «Множественный» | Усложняет подстановку в текст |
| Значение приходит из поля сделки | Поле документа | Не требует отдельной переменной | Форма «Вставка значения» | Зависит от доступности поля |
| Нужно вывести значение в уведомлении | Переменная с модификатором printable | Преобразует в понятную строку | Параметры действия «Уведомление» | Не все типы поддерживают печатную форму |
Таблица помогает выбрать способ хранения до начала настройки. Если сомневаетесь, начните с переменной и значения по умолчанию: это безопаснее, чем параметр, который нельзя изменить, или константа, требующая прав.
Пошаговая настройка передачи значений между шагами
Шаг 1. Определите перечень данных, которые должны передаваться между шагами. Запишите их в карту переменных.
Шаг 2. Для каждого данного выберите тип хранения: параметр, переменная или константа. Если значение меняется — переменная. Если известно до старта — параметр. Если фиксировано — константа.
Шаг 3. В шаблоне бизнес-процесса на вкладке «Переменные» добавьте переменные. Укажите идентификатор, название, тип, обязательность, множественность, значение по умолчанию.
Шаг 4. В действиях процесса настройте запись переменных. Используйте форму «Вставка значения» для подстановки полей документа, параметров, результатов предыдущих действий.
Шаг 5. В действиях, где переменная читается, подставьте её через форму «Вставка значения». Если нужно вывести в текст, добавьте модификатор printable.
Шаг 6. Проверьте последовательность: запись раньше чтения в каждой ветке. Если ветка не записывает переменную, задайте значение по умолчанию.
Шаг 7. Включите журнал событий на 7 дней для отладки. Запустите процесс на тестовой сущности. Проверьте корректность заполнения и чтения переменных. Убедитесь, что события отображаются в таймлайне карточки CRM.
Шаг 8. После проверки отключите журнал отладки, если он не нужен постоянно. Обновите карту переменных.
Учебный пример: согласование заявки на закупку
Учебный пример. Компания «Условная» использует Битрикс24 для согласования заявок на закупку. В процессе участвуют менеджер, руководитель отдела и бухгалтерия. Заявка создаётся в смарт-процессе. Нужно передавать сумму заявки, ответственного менеджера и статус согласования между шагами.
Входные условия: сумма заявки вводится менеджером при запуске, ответственный менеджер определяется автоматически как текущий пользователь, статус согласования меняется по ходу процесса. Сумма — параметр, ответственный — переменная, статус — переменная.
Настройка: на вкладке «Параметры» создан параметр «Сумма заявки» с типом «Деньги», обязательный. На вкладке «Переменные» созданы переменные «Ответственный менеджер» (тип «Привязка к пользователю») и «Статус согласования» (тип «Строка», значение по умолчанию «На согласовании»).
Шаги процесса: 1) запуск, менеджер указывает сумму; 2) действие «Записать в переменную» — ответственный менеджер = текущий пользователь; 3) условие: если сумма больше порога, отправить руководителю, иначе сразу в бухгалтерию; 4) в ветке руководителя статус меняется на «Согласовано руководителем»; 5) в бухгалтерии статус меняется на «Проверено»; 6) уведомление менеджеру с суммой и статусом.
Проверка: запускаем процесс на тестовой заявке с суммой ниже порога. Ожидаем, что ветка руководителя пропускается, статус сразу «Проверено». Проверяем, что в уведомлении сумма отображается как деньги, ответственный — как имя и фамилия, статус — как строка. Затем запускаем заявку с суммой выше порога. Ожидаем, что ветка руководителя выполняется, статус меняется последовательно. Если в уведомлении сумма отображается техническим значением, проверяем модификатор printable.
Наблюдаемый результат: переменные заполняются, значения передаются между шагами, уведомления содержат понятные данные. При повторном запуске процесса на той же заявке переменные сбрасываются к значениям по умолчанию, что соответствует задумке.
Чек-лист проверки передачи значений между шагами
- Карта переменных заполнена: имя, тип, источник, шаг записи, шаг чтения.
- Для каждой переменной задано значение по умолчанию, если она может не записываться в какой-то ветке.
- Порядок действий проверен: запись переменной происходит раньше чтения в каждой ветке.
- Типы переменных соответствуют данным: деньги, строка, дата, пользователь.
- Для вывода в текст используются модификаторы printable или аналогичные.
- Множественные переменные проверены на накопление значений при повторном запуске.
- Журнал отладки включён на время проверки и отключён после.
- Процесс протестирован на копии шаблона или тестовой сущности.
- Ручное изменение полей сотрудником не нарушает логику процесса.
- При повторном запуске переменные ведут себя ожидаемо.
Ограничения, типичные ошибки и следующий шаг
Ограничения: переменные не сохраняются между запусками процесса. Если нужно хранить историю, используйте поля сущности или отдельные записи. Не все действия предоставляют дополнительные результаты, которые можно записать в переменную. Некоторые типы данных не имеют печатной формы, и для них потребуется преобразование. В коробочной версии доступность полей в форме «Вставка значения» зависит от настроек инфоблока.
Типичные ошибки: запись переменной в одной ветке и чтение в другой без значения по умолчанию; чтение переменной до её записи; неверный тип данных, из-за чего значение не подставляется; отсутствие модификатора printable при выводе в уведомление; накопление значений в множественной переменной при повторном запуске; ручное изменение поля, которое не синхронизировано с переменной.
Следующий шаг: если вы настраиваете процесс с ролями, стадиями, событиями и исключениями, проверьте, как переменные взаимодействуют с роботами и триггерами. Для комплексной настройки автоматизации можно обратиться к автоматизации бизнес-процессов в Битрикс24. Дополнительно изучите бизнес-процессы и роботы в Битрикс24, роботы Битрикс24 и триггеры Битрикс24, чтобы согласовать передачу данных между разными механизмами автоматизации.
Чем переменная отличается от параметра в бизнес-процессе Битрикс24?
Параметр указывается при запуске и не может быть изменён после старта. Переменная — временные данные, которые можно изменять по ходу процесса.
Почему переменная пустая в одной из веток?
Скорее всего, в этой ветке нет действия, записывающего переменную, и не задано значение по умолчанию. Проверьте карту переменных и порядок действий.
Что происходит с переменными при повторном запуске процесса?
Они сбрасываются к значениям по умолчанию или становятся пустыми, если значение по умолчанию не задано. Предыдущие значения не сохраняются.
Как вывести значение переменной в уведомление в понятном виде?
Используйте модификатор printable при подстановке через форму «Вставка значения». Для некоторых типов доступны дополнительные преобразования.
Можно ли использовать переменную для хранения истории изменений?
Нет, переменная живёт в рамках одного запуска и сбрасывается при повторном запуске. Для истории используйте поля сущности или отдельные записи.
Где проверить, что переменные передаются корректно?
Включите журнал отладки на 7 дней, запустите процесс на тестовой сущности и проверьте заполнение переменных на каждом шаге. После проверки журнал можно отключить.
Практический разбор: передача переменной между шагами процесса закупки
Учебный разбор. Условный шаблон процесса в CRM для заявки на закупку. Заданы переменная «СуммаЗакупки» типа Деньги и переменная «Согласовавший» типа Привязка к сотруднику. Вводное правило: при сумме выше лимита заявка уходит на согласование руководителю, иначе закрывается сразу. Проверку ведут на копии шаблона с включённой записью событий в журнал отладки.
| Действие | Что проверить |
|---|---|
| В копии шаблона на шаге после ввода данных добавить действие изменения переменной и записать в «СуммаЗакупки» значение из поля заявки через форму вставки значения. | В журнале отладки видно, что переменная получила числовое значение, а не пустую строку. |
| На шаге условия сравнить «СуммаЗакупки» с лимитом и направить процесс по ветке согласования; в ветке согласования записать в «Согласовавший» ответственного руководителя. | Процесс уходит в нужную ветку, а в журнале у «Согласовавший» появляется конкретный сотрудник, а не пустое значение. |
| В уведомлении после согласования подставить обе переменные и выполнить тестовый запуск на обезличенной заявке. | В полученном уведомлении отображаются та же сумма и тот же сотрудник, что зафиксированы в журнале. |
Для приёмки. Сохранить выгрузку журнала отладки по тестовому запуску и скриншот уведомления; сверить, что значения переменных на шаге записи и шаге чтения совпадают.
Ограничение. Сценарий проверяет только передачу значений между шагами в одной ветке. Поведение при повторном запуске, ручном вмешательстве и множественных переменных здесь не рассматривается.