Перейти к основному содержимому

Глобальные переменные

Глобальная переменная — это именованное хранилище с одним значением, общее для всех подписчиков бота. Создаётся один раз заранее, изменяется из сценариев.

Когда использовать глобальную переменную

ЗадачаЧто выбрать
Имя клиента, его телефон, корзинаЛокальная переменная — у каждого своё значение
История заказов клиентаСписок
Порядковый номер счетаГлобальная переменная
Промокод месяцаГлобальная переменная
Ставка комиссии, курс валютыГлобальная переменная
Счётчик заявок за деньГлобальная переменная
Ссылка на актуальный канал поддержкиГлобальная переменная
Флаг «акция включена»Глобальная переменная

Главное отличие от обычной переменной — значение одно на весь бот, а не у каждого клиента своё. Главное отличие от строки в списке — это всего одна ячейка, которую удобно менять руками без сценариев.


Часть 1. Создание глобальной переменной

Шаг 1. Откройте раздел «Глоб. перем.»

На странице «Списки/WebApp» перейдите на вкладку «Глоб. перем.» (рядом со «Списками»).

Вкладка глобальных переменных

Скриншот 1. Раздел «Списки / Переменные», вкладка «Глоб. перем.».

Шаг 2. Создайте переменную

Нажмите кнопку «+ Глобальная переменная». В форме заполните:

  • Название — латиницей или кириллицей, до 256 символов. По этому имени переменная будет вызываться: #{название}.
  • Значение — стартовое содержимое (текст, число, JSON; до 4000 символов).
  • Комментарий (опционально) — заметка для вас и команды: «Курс ЦБ, обновляется по cron».
  • Группа (опционально) — отнесите переменную к группе ботов для удобной фильтрации.

Создание глобальной переменной

Скриншот 2. Форма новой глобальной переменной.

Шаг 3. Сохраните

Переменная появится в общем списке. Дальше её можно:

  • Изменить название;
  • Изменить значение`;
  • Изменить комментарий;
  • Удалить;
  • Сменить группу;
  • перетащить для сортировки.

Список глобальных переменных

Скриншот 3. Список глобальных переменных с быстрыми действиями.


Часть 2. Чтение и запись из сценария

Все операции выполняются в Сценарии действий → действие «Операции с данными (Переменные, Списки)».

3.1. Прочитать значение

Значение глобальной переменной можно получать как значение обычной переменной с добавлением префикса g_ к названию глобальной переменной, например, #{g_globalname}.

Чтобы получить значение глобальной переменной в сценарии, добавьте операцию типа «Глобальная переменная» и выберите её из выпадающего списка. Для присвоения в списке "Куда присвоить" выберите из списка Переменная, укажите имя переменной. В поле значения укажите шаблон [GlobalVar].

Операция «Глобальная переменная»

Скриншот 4. Операция чтения глобальной переменной.

3.2. Записать новое значение

В операции «Переменная» или «Глобальная переменная» → блок «Присвоения» → поле «Куда присвоить» выберите «Глобальная переменная» → в выпадающем списке выберите нужную.

Присвоение значения глобальной переменной

Скриншот 5. Запись значения в глобальную переменную.

В поле «Значение» можно использовать любые шаблоны замен:

  • текущее значение глобальной переменной доступно из шаблона [GlobalVar].
  • статический текст: Зима скидка -30%;
  • ответ из блока: [Answer1];
  • другую переменную: #{новый_курс};
  • системный шаблон: [CurrentDate];
  • вычисление: {{ #{global_counter} + 1 }} — увеличить счётчик на 1.

3.3. Сохранить результат отбора списка

В операциях со списком, в перебое массива доступно действие «Сохранить в глобальную переменную» — записать значение поля из текущей строки списка в глобальную переменную.


Часть 3. Примеры использования

Пример 1. Счётчик заявок

Задача: считать количество заявок, оформленных через бота.

  1. Создайте глобальную переменную g_orders_total со значением 0.
  2. В сценарии оформления заказа добавьте операцию «Глобальная переменная» → присвоение:
    • Куда: Переменнаяg_orders_total
    • Значение: [GlobalVar] + 1
  3. В админ-блоке отправляйте себе: Всего заявок: #{g_orders_total}.

Пример 2. Промокод месяца

  1. Создайте g_promo_code = SUMMER2026 и g_promo_until = 31.08.2026.
  2. В сценарии добавьте операцию «Глобальная переменная» → присвоение:
    • Куда: Переменнаяg_promo_code
    • Значение: [GlobalVar]
  3. В рассылке: 🎁 Промокод месяца: #{g_promo_code}. Действует до #{g_promo_until}.
  4. Каждый месяц меняйте значение вручную в разделе «Глоб. перем.» — сценарии трогать не надо.

Пример 3. Курс валюты для расчётов

  1. Глобальная переменная g_usd_rate = 92.5.
  2. В сценарии действий вызывайте HTTP-запрос к API ЦБ и сохраняйте результат в g_usd_rate.
  3. В сценарии добавьте операцию «Глобальная переменная» → присвоение:
    • Куда: Переменнаяg_usd_rate
    • Значение: [GlobalVar]
  4. В калькуляторе товаров: Цена в рублях: {{ #{price_usd} * #{g_usd_rate} }} ₽.

Пример 4. Флаг технических работ

  1. Глобальная переменная g_maintenance = 0.
  2. В сценарии добавьте операцию «Глобальная переменная» → присвоение:
    • Куда: Переменнаяg_maintenance
    • Значение: [GlobalVar]
  3. В стартовом блоке проверка перехода: если #{g_maintenance} = 1 → отправить сообщение «Бот на обслуживании», иначе — обычный сценарий.
  4. Включить режим — поменять значение на 1 в админке. Никаких правок сценариев.

Пример 5. Текст пользовательского соглашения

  1. g_terms_url = https://example.com/terms-v3.pdf.
  2. В сценарии добавьте операцию «Глобальная переменная» → присвоение:
    • Куда: Переменнаяg_terms_url
    • Значение: [GlobalVar]
  3. Во всех приветствиях и формах: Принимая, вы соглашаетесь с условиями: #{g_terms_url}.
  4. При обновлении документа — меняете значение в одном месте, и оно подтягивается везде.

Локальная, глобальная переменная, список — сравнение

Локальная переменнаяГлобальная переменнаяСписок
Где хранится значениеВ рамках одного сценарияНа уровне ботаНа сервере как таблица
У каждого клиента своё значение?ДаНет — общееЗаписи разделяются по ClientID
Сколько значенийОдноОдноМного строк
Меняется руками в админке?НетДаДа (через редактор)
Когда использоватьИмя, ответ, временный счётчикНастройки бота, промокод, курсБаза клиентов, корзина, история

Частые ошибки

  • Изменили значение глобальной переменной, а в сообщении не подставляется — проверьте, что в подстановке имя без пробелов и в нужном регистре (#{promo}#{Promo}).
  • #{g_counter} + 1 подставился буквально как 5 + 1 — для вычислений оборачивайте выражение в {{ }}: {{ #{g_counter} + 1 }}.
  • Локальная переменная «перебила» глобальную с тем же именем — давайте глобальным префикс: g_, global_, cfg_.
  • Переменная не видна в выпадающем списке сценария — проверьте, что она создана в той же автоворонке, в которой строите сценарий.
  • Значение случайно очистилось — глобальную переменную может изменить любой сценарий бота. Если важно — закрепите комментарий с описанием, кто и когда её меняет.

Что дальше