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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

Значение глобальной переменной подставляется как обычная переменная, только с префиксом g_ в имени: #{g_Курс валют}. Имя после g_ пишется ровно так, как переменная названа в разделе «Глоб. перем.», — включая пробелы и регистр. Отдельное действие для чтения при этом не нужно.

Работает и в блоках

#{g_Имя} подставляется не только в сценарии действий, но и в тексте блока, в кнопках и в условиях блока.

Значение читается в момент отправки блока, поэтому оно всегда свежее: если сценарий «до отправки» изменил переменную, тот же самый блок покажет уже новое значение.

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

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

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

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

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

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

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

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

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

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

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


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

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

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

  1. Создайте глобальную переменную Всего заявок со значением 0.
  2. В сценарии действий на блоке оформления заказа добавьте операцию «Переменная» → присвоение:
    • Куда: Глобальная переменнаяВсего заявок
    • Значение: {{ #{g_Всего заявок} + 1 }}
  3. Чтобы показать счётчик себе, подставьте его прямо в текст админ-блока: Всего заявок: #{g_Всего заявок}. Значение читается в момент отправки, поэтому увеличенное на этом же шаге число уже видно.

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

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

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

  1. Глобальная переменная Курс доллара = 92.5.
  2. Отдельная цепочка по расписанию: HTTP-запрос к API ЦБ, результат записывается в Курс доллара.
  3. В сценарии калькулятора считайте прямо подстановкой: цена_руб = {{ #{price_usd} * #{g_Курс доллара} }}
  4. В тексте блока подставляйте уже посчитанную переменную: Цена в рублях: #{цена_руб} ₽.

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

  1. Глобальная переменная Техработы = 0.
  2. В условии перехода стартового блока: если #{g_Техработы} = 1 → сообщение «Бот на обслуживании», иначе — обычный сценарий.
  3. Включить режим — поменять значение на 1 в разделе «Глоб. перем.». Никаких правок сценариев и без промежуточной переменной.

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

  1. Ссылка на оферту = https://example.com/terms-v3.pdf.
  2. Во всех приветствиях и формах прямо в тексте блока: Принимая, вы соглашаетесь с условиями: #{g_Ссылка на оферту}.
  3. При обновлении документа — меняете значение в одном месте, и оно подтягивается везде.

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

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

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

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

Что дальше