§ БЛОГ

Переменные в workflow Staqflow: $vars, секреты и выражения для автоматизации без копипаста

Как задать ставку НДС, адрес API, чат менеджеров или лимит один раз и использовать во всех процессах пространства. Разбираем переменные $vars, типы значений, секретные переменные, выражения в узлах и лучшие практики для автоматизации бизнес-процессов.

Переменные в workflow Staqflow: $vars, секреты и выражения для автоматизации без копипаста

Представьте, что ставка НДС, адрес внутреннего API или ID чата отдела продаж прописаны вручную в двадцати процессах. Поменялось значение — и нужно открыть каждый workflow, найти нужный узел и не пропустить ни одного. Так автоматизация превращается в источник ошибок.

В Staqflow для этого есть переменные пространства: значение задаётся один раз и подставляется в любой узел любого процесса через выражение $vars. Разберём, как их создавать, какие бывают типы, как работают секретные переменные и какие ещё выражения помогают собирать процессы без копипаста.

Что такое переменные пространства

Переменная — это именованное значение, общее для всех workflow пространства. Типичные примеры:

  • константы бизнеса — ставка НДС, процент скидки, порог суммы заказа;
  • адреса и идентификаторы — базовый URL внутреннего API, ID чата в Telegram, ID воронки в CRM;
  • настройки процессов — лимит записей за один прогон, список получателей отчёта, рабочее время;
  • даты — начало акции или отчётного периода.

Переменные живут в пространстве. Поменяли значение на странице «Переменные» — и все процессы этого пространства со следующего запуска используют новое. В соседнем пространстве свои переменные, и одинаковые ключи там не конфликтуют.

Как создать переменную

Переменные создаются на странице «Переменные» в боковой панели пространства — с канвы новое значение не заводят.

  1. Нажмите «Добавить переменную».
  2. Укажите ключ — по нему переменную читают в выражениях.
  3. Выберите тип и введите значение.
  4. При необходимости отметьте «Секрет».

Правила для ключа: латинские буквы, цифры и _, первый символ не цифра, длина до 64 символов. Например, vat_rate, sales_chat, api_url. Ключ уникален в пределах пространства. Значение — до 16 384 символов.

Типы значений

ТипПример значенияЧто вернёт $vars.ключ
Строкаhttps://erp.company.local/apiстроку
Число0.2 или 0,2число
Логическийtrue, false, 1, 0true или false
Массив["anna@company.ru", "ivan@company.ru"]массив
Объект{"pipeline": 12, "stage": "new"}объект
Дата2026-10-01 или 01.10.2026строку с датой
Дата и время2026-10-01T09:00строку с датой и временем
Время09:00строку со временем

Тип важен: число можно сразу умножать, а массив и объект — перебирать и читать по полям без дополнительного разбора JSON.

Как использовать переменные в узлах

В поле узла включите переключатель «Выражение» — иначе текст подставится как есть. Дальше пишите выражение в двойных фигурных скобках:

{{ $vars.api_url }}/orders

Есть и короткий вариант $var.ключ. После $vars. редактор подсказывает ключи пространства, а в превью видно, какое значение подставится.

Несколько примеров:

  • сумма с НДС — {{ $json.amount * (1 + $vars.vat_rate) }};
  • чат для уведомлений в узле Telegram — {{ $vars.sales_chat }};
  • получатели отчёта из массива — {{ $vars.report_emails.join(', ') }};
  • ID воронки из объекта — {{ $vars.crm.pipeline }}.

В узле Code переменные доступны так же — через $vars:

const threshold = $vars.big_order_threshold;
return $input.all().filter(item => item.json.total > threshold);

Переменные можно использовать и в выражениях внутри учётных данных — например, собрать адрес сервиса из общего базового URL.

Значения фиксируются на время запуска

Переменные загружаются один раз в начале прогона. Если кто-то поменяет значение, пока процесс выполняется, текущий запуск доработает со старым значением, а новое подхватит следующий. Так один прогон не получит половину данных со старой ставкой и половину — с новой.

Если в выражении указан несуществующий ключ, процесс сохранится, но на этом месте будет пусто. Проверяйте превью выражения перед включением workflow.

Секретные переменные

Отметка «Секрет» скрывает значение в интерфейсе:

  • в списке переменных и в превью выражений вместо значения — звёздочки по его длине;
  • прочитать значение после сохранения через интерфейс нельзя;
  • при редактировании пустое поле оставляет прежнее значение.

При запуске workflow секретная переменная читается через $vars.ключ так же, как обычная. Поэтому важно правило:

Секретная переменная — не замена учётным данным. Токены ботов, пароли баз данных и ключи API храните в учётных данных: они шифруются, выбираются на узле и не подставляются в текст выражений. Секретные переменные подходят для значений, которые не нужно показывать всем участникам пространства, но которые не являются ключом доступа к сервису. И не выводите секретные значения в результат узлов — данные узлов сохраняются в истории запусков.

Переменные и учётные данные: что где хранить

ЧтоГде хранить
Токен бота, пароль БД, API-ключУчётные данные
OAuth-подключение к CRM или почтеУчётные данные
Ставка НДС, лимиты, порогиПеременные
Адрес API, ID чата, ID воронкиПеременные
Данные с предыдущего шага процессаВыражения $json, $input, $('Узел')

Прод и тест: одинаковые ключи в разных пространствах

Удобная практика — держать процессы в двух пространствах, например «Прод» и «Тесты», с одинаковыми ключами переменных, но разными значениями: api_url указывает на боевой и тестовый сервер, sales_chat — на рабочий и тестовый чат.

Процесс переносится экспортом в файл и импортом в другое пространство. Значения переменных в файл не попадают — только выражения вида $vars.api_url. В новом пространстве процесс сразу использует его собственные переменные.

Другие выражения, которые пригодятся

Кроме $vars, в выражениях доступны данные процесса:

  • $json — данные текущего элемента на входе узла;
  • $input.first(), $input.all() — первый или все элементы входа;
  • $('Имя узла').item.json — результат конкретного предыдущего узла;
  • $now и $today — текущие дата и время с методами форматирования и арифметики, например {{ $now.minus({ days: 7 }).toFormat('yyyy-MM-dd') }};
  • $execution.id и $execution.mode — идентификатор запуска и режим: тест или прод;
  • $itemIndex и $runIndex — номер элемента и прогона узла.

У строк, чисел, массивов и дат есть удобные методы: .toNumber(), .isEmpty(), .extractEmail(), .removeDuplicates(), .sum(), .format() и другие.

Выражения выполняются в изолированной песочнице. Переменные окружения сервера через $env недоступны — это сделано намеренно: конфигурация и секреты процессов хранятся в учётных данных и переменных пространства.

Права доступа

  • Наблюдатель видит список переменных пространства.
  • Участник, админ и владелец создают, меняют и удаляют переменные.

Частые вопросы

Чем переменные отличаются от учётных данных?

Учётные данные — это зашифрованные подключения к сервисам: токены, пароли, OAuth. Переменные — общие значения для выражений: константы, адреса, идентификаторы, списки.

Можно ли использовать переменные в узле Code?

Да, через $vars.ключ — так же, как в выражениях в полях узлов.

Можно ли изменить переменную из процесса?

Нет. Значение меняется только на странице «Переменные» — так процессы не перезаписывают общие настройки друг друга.

Что будет, если поменять переменную во время запуска?

Текущий запуск доработает со старым значением, следующий возьмёт новое.

Переносятся ли переменные при экспорте workflow?

Нет, в файле остаются только выражения $vars.ключ. В другом пространстве создайте переменные с теми же ключами.

Можно ли получить переменные окружения сервера через $env?

Нет, доступ к $env в выражениях и узле Code закрыт. Используйте учётные данные и переменные пространства.

Попробуйте

  1. Создайте аккаунт — личное пространство появится сразу.
  2. Заведите первые переменные: ставку, адрес API или ID чата.
  3. Подставьте их в процесс через {{ $vars.ключ }} — на канве или попросите свой ИИ-клиент через MCP.

Подробнее о переменных — в документации.