EnotPRO Logo EnotPRO

AddVarLocal

AddVarLocal — изменяет значение локальной переменной, не заменяя его полностью.

📝 Назначение

Используется для накопления данных внутри одного триггера: счётчиков, списков, конкатенации строк. В отличие от SetVarLocal, эта реакция изменяет существующее значение, а не перезаписывает.

🟢 Важно: Если переменная не существует, AddVarLocal создаст её с указанным значением (как SetVarLocal).

Когда использовать:

  • Подсчёт количества итераций в цикле
  • Накопление суммы в процессе обработки
  • Добавление элементов в массив
  • Конкатенация строк (добавление текста в конец)

🔄 Поведение в зависимости от типа

Тип переменной Что делает Пример
number (целое) Прибавляет указанное значение Было 10, добавить 3 → стало 13
float (дробное) Прибавляет указанное значение Было 10.5, добавить 2.3 → стало 12.8
string (строка) Добавляет текст в конец Было "Привет", добавить ", мир""Привет, мир"
array (массив) Добавляет элемент в конец Было [1,2], добавить 3[1,2,3]
object (JSON) Объединяет объекты (поверхностно) {"a":1} + {"b":2}{"a":1, "b":2}
bool (логический) Заменяет (как SetVarLocal) true + falsefalse

⚠️ Особенность: Для bool типа AddVarLocal работает как SetVarLocal (замена, а не логическая операция).

⚙️ Параметры

Параметр Тип Обязательный Описание
Название Строка ✅ Да Имя локальной переменной (латиница, без пробелов)
Значение Любой ✅ Да Значение для добавления/прибавления
Тип данных Выбор ❌ Нет auto, string, number, float, bool, json, array. По умолчанию — auto

📍 Доступ к значению

После выполнения реакции значение доступно по пути:

${localVar.название}

Примеры:

${localVar.counter}      # число (счётчик)
${localVar.items}        # массив
${localVar.log}          # строка (накопленный лог)

🧪 Примеры использования

Пример 1: Счётчик в цикле (через TriggerFolder)

Задача: При каждом нажатии кнопки увеличивать счётчик.

Реакции в триггере:

  1. GetVarLocal → (если переменная не существует, AddVarLocal создаст её)
  2. AddVarLocal → название: clicks, значение: 1
  3. SendMessage → текст: Количество нажатий: ${localVar.clicks}

Результат:

  • Первое нажатие → переменная создана, значение 1
  • Второе нажатие → было 1, стало 2
  • Третье нажатие → было 2, стало 3

Пример 2: Накопление суммы

Задача: В процессе обработки товаров в корзине накапливать итоговую сумму.

Реакции в триггере (для каждого товара):

  1. AddVarLocal → название: total, значение: ${item_price}
  2. (После обработки всех товаров) SendMessageИтого: ${localVar.total} ₽

Результат: Было 0 (переменная создана), добавить 150150, добавить 200350

Пример 3: Добавление элементов в массив

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

Реакции в триггере (при добавлении товара):

  1. AddVarLocal → название: selected_ids, значение: ${product_id}, тип: array
  2. (После завершения выбора) SendMessageВыбраны товары: !{json|value: ${localVar.selected_ids}}

Результат:

  • Первый товар (123) → переменная создана, значение [123]
  • Второй товар (456) → было [123], стало [123, 456]
  • Третий товар (789) → было [123, 456], стало [123, 456, 789]

Пример 4: Конкатенация строк (лог действий)

Задача: Вести лог действий пользователя в рамках одного сеанса.

Реакции в триггере (при каждом действии):

  1. AddVarLocal → название: action_log, значение: \n!{time|output_format: HH:mm:ss} - Выполнено действие
  2. (При завершении) SendMessage → текст: История действий:${localVar.action_log}

Результат:

  • Первое действие → \n14:30:25 - Выполнено действие
  • Второе действие → \n14:30:25 - Выполнено действие\n14:35:10 - Выполнено действие

Пример 5: Объединение JSON-объектов

Задача: Постепенно собирать объект с данными пользователя.

Реакции в триггере:

  1. AddVarLocal → название: profile, значение: {"name": "Иван"}, тип: json
  2. AddVarLocal → название: profile, значение: {"age": 30}, тип: json
  3. AddVarLocal → название: profile, значение: {"city": "Москва"}, тип: json
  4. SendMessage → текст: Данные: !{json|value: ${localVar.profile}}

Результат:

{
  "name": "Иван",
  "age": 30,
  "city": "Москва"
}

⚠️ Важно: Объединение выполняется поверхностно. Вложенные объекты заменяются, а не объединяются.

🔄 Разница между AddVarLocal и SetVarLocal

Операция AddVarLocal SetVarLocal
Число 10 → добавить 5 Будет 15 (прибавит) Будет 5 (заменит)
Строка "A" → добавить "B" Будет "AB" (добавит в конец) Будет "B" (заменит)
Массив [1,2] → добавить 3 Будет [1,2,3] (добавит элемент) Будет [3] (заменит)
Объект {"a":1} → добавить {"b":2} Будет {"a":1, "b":2} (объединит) Будет {"b":2} (заменит)

💡 Совет: Используйте AddVarLocal для накопления (счётчики, списки, лог). Используйте SetVarLocal для установки начального значения или полной замены.

🔗 Связанные реакции

Реакция Назначение
SetVarLocal Создать или перезаписать локальную переменную
DelVarLocal Удалить локальную переменную
AddVarCloud Изменить облачную переменную

🔗 Связанные разделы

Раздел Описание
Локальные переменные Общая информация о локальных переменных
Макрос math Вычисления для значений
Макрос list Работа с массивами

🔗 Быстрая навигация

  • Вверх
  • Поведение по типам
  • Параметры
  • Примеры
  • Разница с SetVarLocal
  • Частые ошибки
© 2025 EnotPRO. Все права защищены.