Переменные — это сущность, которая применяется исключительно внутри процедур (расширенный режим настройки узла с DTL-кодом). В отличие от атрибутов профиля, переменные больше нигде на платформе не видны и не используются — их нельзя показать в профиле клиента, использовать при сегментации аудитории, выгрузить в отчетах. Это чисто техническая сущность для реализации более гибкой логики внутри процедуры.
Переменная и атрибут
Разница не в том, «временное или постоянное» — оба могут жить долго. Разница в области действия:
- Атрибут хранится в объекте
attributes, доступен для фильтрации чатов, может отображаться в профиле пользователя — и чтобы им пользоваться, его нужно заранее создать в настройках проекта (подробнее — в статье «Атрибуты профиля и теги: в чём разница и как это работает»). - Переменная — просто объявляется прямо в коде процедуры и используется там же.
Теги для работы с переменными
| Действие с переменной | Код |
|---|---|
| Сохранение значения переменной | |
| Удалить одну или несколько переменных | |
| Проверить, что переменная существует | |
| Сохранить в переменную значение get-параметра | |
Два способа объявить переменную
У переменных есть два способа объявления, и они различаются временем жизни:
save_variable— переменная живёт в рамках всего проекта и продолжает существовать, пока её явно не удалить черезdelete_variables. Такую переменную можно проверить или переиспользовать в другой процедуре, в другом узле, в другой сессии — где угодно в проекте, пока она не удалена.set— переменная живёт только в рамках текущей процедуры:
{% set variable_name="value" %}
После завершения процедуры она исчезает сама, без явного удаления.
⚠️ Важно: если значение нужно передать в другую процедуру или сохранить между сессиями — используйте
save_variable. Если переменная нужна только для промежуточного расчёта внутри одной процедуры и после неё не имеет смысла — используйтеset.