Глобальные переменные
Глобальная переменная — это именованное хранилище с одним значением, общее для всех подписчиков бота. Создаётся один раз заранее, изменяется из сценариев.
Когда использовать глобальную переменную
| Задача | Что выбрать |
|---|---|
| Имя клиента, его телефон, корзина | Локальная переменная — у каждого своё значение |
| История заказов клиента | Список |
| Порядковый номер счета | Глобальная переменная |
| Промокод месяца | Глобальная переменная |
| Ставка комиссии, курс валюты | Глобальная переменная |
| Счётчик заявок за день | Глобальная переменная |
| Ссылка на актуальный канал поддержки | Глобальная переменная |
| Флаг «акция включена» | Глобальная переменная |
Главное отличие от обычной переменной — значение одно на весь бот, а не у каждого клиента своё. Главное отличие от строки в списке — это всего одна ячейка, которую удобно менять руками без сценариев.
Часть 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.4. Значение как есть: знак ~ перед подстановкой
В полях сценария действий (присвоение, «Сделать», HTTP-запрос и другие) конструктор после подстановки пробует посчитать значение как выражение. Для чисел и формул это удобно, но значения, которые только похожи на выражение, портятся:
| Значение глобальной переменной | Что попадёт в переменную |
|---|---|
2026-09-25 — дата через дефис | 1992 |
8-800-555-35-35 — телефон | -1417 |
5/2 — номер дома, дробь | 2.5 |
12-3 — артикул, номер кабинета | 9 |
Чтобы взять значение как есть, поставьте перед подстановкой знак ~ (тильда):
- Куда: Переменная →
дата_старта - Значение:
~#{g_Дата старта}→ в переменной окажется~2026-09-25.
Знак ~ не является частью выражения, поэтому конструктор ничего не считает и оставляет текст целиком. Сам знак остаётся первым символом значения — уберите его, прежде чем показывать значение или сравнивать:
- в действии «JS код»:
varstore['дата_старта'] = String(varstore['дата_старта'] || '').replace(/^~/, ''); - или сравнивайте вместе со знаком:
'#{дата_старта}' = '~2026-09-25'.
~ не обойтись- Запись в глобальную переменную. Здесь значение считается дважды — при подстановке и при записи. Кавычки
'2026-09-25'снимаются первым проходом, второй всё равно посчитает дату. Со знаком~значение сохранится как есть (вместе с~). Даты в глобальной переменной удобнее хранить числом:20260925. - Настройки, которые владелец бота меняет руками: телефоны, даты, коды, адреса, реквизиты. Заранее неизвестно, что туда впишут.
- Значение с кавычкой внутри (
ООО "Ромашка",О'Нил): взять такое в кавычки не получится.
В тексте блока, в кнопках и в условиях блока #{g_Имя} выводится как есть — там считается только то, что стоит в {{ }}. Переменная со знаком ~ в тексте блока так и покажет ~2026-09-25: выводите клиенту уже очищенную переменную.
Часть 3. Примеры использования
Пример 1. Счётчик заявок
Задача: считать количество заявок, оформленных через бота.
- Создайте глобальную переменную
Всего заявоксо значением0. - В сценарии действий на блоке оформления заказа добавьте операцию «Переменная» → присвоение:
- Куда: Глобальная переменная →
Всего заявок - Значение:
{{ #{g_Всего заявок} + 1 }}
- Куда: Глобальная переменная →
- Чтобы показать счётчик себе, подставьте его прямо в текст админ-блока:
Всего заявок: #{g_Всего заявок}. Значение читается в момент отправки, поэтому увеличенное на этом же шаге число уже видно.
Пример 2. Промокод месяца
- Создайте
Промокод=SUMMER2026иПромокод до=31.08.2026. - В сценарии действий до блока рассылки положите их в обычные переменные:
промокод=#{g_Промокод}промокод_до=#{g_Промокод до}
- В тексте блока:
🎁 Промокод месяца: #{промокод}. Действует до #{промокод_до}. - Каждый месяц меняйте значение вручную в разделе «Глоб. перем.» — сценарии трогать не надо.
Пример 3. Курс валюты для расчётов
- Глобальная переменная
Курс доллара=92.5. - Отдельная цепочка по расписанию: HTTP-запрос к API ЦБ, результат записывается в
Курс доллара. - В сценарии калькулятора считайте прямо подстановкой:
цена_руб={{ #{price_usd} * #{g_Курс доллара} }} - В тексте блока подставляйте уже посчитанную переменную:
Цена в рублях: #{цена_руб} ₽.
Пример 4. Флаг технических работ
- Глобальная переменная
Техработы=0. - В условии перехода стартового блока: если
#{g_Техработы} = 1→ сообщение «Бот на обслуживании», иначе — обычный сценарий. - Включить режим — поменять значение на
1в разделе «Глоб. перем.». Никаких правок сценариев и без промежуточной переменной.
Пример 5. Текст пользовательского соглашения
Ссылка на оферту=https://example.com/terms-v3.pdf.- Во всех приветствиях и формах прямо в тексте блока:
Принимая, вы соглашаетесь с условиями: #{g_Ссылка на оферту}. - При обновлении документа — меняете значение в одном месте, и оно подтягивается везде.
Локальная, глобальная переменная, список — сравнение
| Локальная переменная | Глобальная переменная | Список | |
|---|---|---|---|
| Где хранится значение | В рамках одного сценария | На уровне бота | На сервере как таблица |
| У каждого клиента своё значение? | Да | Нет — общее | Записи разделяются по ClientID |
| Сколько значений | Одно | Одно | Много строк |
| Меняется руками в админке? | Нет | Да | Да (через редактор) |
| Когда использовать | Имя, ответ, временный счётчик | Настройки бота, промокод, курс | База клиентов, корзина, история |
Частые ошибки
#{g_...}подставилось пустой строкой — имя послеg_не совпало с названием переменной или переменная создана в другом аккаунте. Проверьте написание, включая пробелы и регистр.- Изменили значение глобальной переменной, а в сообщении не подставляется — проверьте, что имя после
g_совпадает с названием переменной по регистру и пробелам (#{g_Промокод}≠#{g_промокод}). #{g_counter} + 1подставился буквально как5 + 1— для вычислений оборачивайте выражение в{{ }}:{{ #{g_counter} + 1 }}.- Дата стала числом
1992, телефон — отрицательным числом — значение посчиталось как выражение. Берите его со знаком~:~#{g_Дата старта}, а знак потом уберите — см. 3.4. - В сообщении клиенту видно
~перед значением — переменную со знаком~показали, не очистив. Уберите знак в «JS код» и выводите очищенную переменную. - Локальная переменная «перебила» глобальную с тем же именем — давайте глобальным префикс:
g_,global_,cfg_. - Переменная не видна в выпадающем списке сценария — проверьте, что она создана в той же автоворонке, в которой строите сценарий.
- Значение случайно очистилось — глобальную переменную может изменить любой сценарий бота. Если важно — закрепите комментарий с описанием, кто и когда её меняет.
Что дальше
- Подставляйте значения через шаблоны замен и системные переменные.
- Сохраняйте данные подписчиков в списки.
- Используйте глобальные переменные в условиях перехода между блоками.