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 + false → false |
⚠️ Особенность: Для
boolтипаAddVarLocalработает какSetVarLocal(замена, а не логическая операция).
⚙️ Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| Название | Строка | ✅ Да | Имя локальной переменной (латиница, без пробелов) |
| Значение | Любой | ✅ Да | Значение для добавления/прибавления |
| Тип данных | Выбор | ❌ Нет | auto, string, number, float, bool, json, array. По умолчанию — auto |
📍 Доступ к значению
После выполнения реакции значение доступно по пути:
${localVar.название}
Примеры:
${localVar.counter} # число (счётчик)
${localVar.items} # массив
${localVar.log} # строка (накопленный лог)
🧪 Примеры использования
Пример 1: Счётчик в цикле (через TriggerFolder)
Задача: При каждом нажатии кнопки увеличивать счётчик.
Реакции в триггере:
GetVarLocal→ (если переменная не существует,AddVarLocalсоздаст её)AddVarLocal→ название:clicks, значение:1SendMessage→ текст:Количество нажатий: ${localVar.clicks}
Результат:
- Первое нажатие → переменная создана, значение
1 - Второе нажатие → было
1, стало2 - Третье нажатие → было
2, стало3
Пример 2: Накопление суммы
Задача: В процессе обработки товаров в корзине накапливать итоговую сумму.
Реакции в триггере (для каждого товара):
AddVarLocal→ название:total, значение:${item_price}- (После обработки всех товаров)
SendMessage→Итого: ${localVar.total} ₽
Результат: Было 0 (переменная создана), добавить 150 → 150, добавить 200 → 350
Пример 3: Добавление элементов в массив
Задача: Собрать список ID товаров, выбранных пользователем.
Реакции в триггере (при добавлении товара):
AddVarLocal→ название:selected_ids, значение:${product_id}, тип:array- (После завершения выбора)
SendMessage→Выбраны товары: !{json|value: ${localVar.selected_ids}}
Результат:
- Первый товар (
123) → переменная создана, значение[123] - Второй товар (
456) → было[123], стало[123, 456] - Третий товар (
789) → было[123, 456], стало[123, 456, 789]
Пример 4: Конкатенация строк (лог действий)
Задача: Вести лог действий пользователя в рамках одного сеанса.
Реакции в триггере (при каждом действии):
AddVarLocal→ название:action_log, значение:\n!{time|output_format: HH:mm:ss} - Выполнено действие- (При завершении)
SendMessage→ текст:История действий:${localVar.action_log}
Результат:
- Первое действие →
\n14:30:25 - Выполнено действие - Второе действие →
\n14:30:25 - Выполнено действие\n14:35:10 - Выполнено действие
Пример 5: Объединение JSON-объектов
Задача: Постепенно собирать объект с данными пользователя.
Реакции в триггере:
AddVarLocal→ название:profile, значение:{"name": "Иван"}, тип:jsonAddVarLocal→ название:profile, значение:{"age": 30}, тип:jsonAddVarLocal→ название:profile, значение:{"city": "Москва"}, тип:jsonSendMessage→ текст:Данные: !{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
- Частые ошибки