Переменные в платформе: что это такое и когда их использовать

Переменные — это сущность, которая применяется исключительно внутри процедур (расширенный режим настройки узла с DTL-кодом). В отличие от атрибутов профиля, переменные больше нигде на платформе не видны и не используются — их нельзя показать в профиле клиента, использовать при сегментации аудитории, выгрузить в отчетах. Это чисто техническая сущность для реализации более гибкой логики внутри процедуры.

Переменная и атрибут

Разница не в том, «временное или постоянное» — оба могут жить долго. Разница в области действия:

  • Атрибут хранится в объекте attributes, доступен для фильтрации чатов, может отображаться в профиле пользователя — и чтобы им пользоваться, его нужно заранее создать в настройках проекта (подробнее — в статье «Атрибуты профиля и теги: в чём разница и как это работает»).
  • Переменная — просто объявляется прямо в коде процедуры и используется там же.

Теги для работы с переменными

Действие с переменнойКод
Сохранение значения переменной
{% save_variable "название_переменной" "значение" %}
Удалить одну или несколько переменных
{% delete_variables "название_переменной" "название_переменной2" %}
Проверить, что переменная существует
{% if название_переменной %}
Сохранить в переменную значение get-параметра
{% save_variable "название_переменной" get_params.гет-параметр %}

Два способа объявить переменную

У переменных есть два способа объявления, и они различаются временем жизни:

  • save_variable — переменная живёт в рамках всего проекта и продолжает существовать, пока её явно не удалить через delete_variables. Такую переменную можно проверить или переиспользовать в другой процедуре, в другом узле, в другой сессии — где угодно в проекте, пока она не удалена.
  • set — переменная живёт только в рамках текущей процедуры:

{% set variable_name="value" %}

После завершения процедуры она исчезает сама, без явного удаления.

⚠️ Важно: если значение нужно передать в другую процедуру или сохранить между сессиями — используйте save_variable. Если переменная нужна только для промежуточного расчёта внутри одной процедуры и после неё не имеет смысла — используйте set.