# Операция над переменной

Записывает в переменную значение, которое вы задали сами, или результат вычисления. Блок подходит для счётчиков, баллов в тестах и викторинах, расчёта суммы.

![Панель настроек блока «Операция над переменной»](https://support.watbot.ru/_media/ru/01-chatbots/03-blocks/04-contact-data/_images/variable-operation.webp?v=1791781230)

## Настройки

- **«Тип операции»** — что именно делает блок:
  - «Произвольное значение» — записать в переменную указанное значение;
  - «Математическое выражение» — изменить одну переменную: прибавить, вычесть, умножить, разделить;
  - «Математическое выражение 2.0» — посчитать выражение из нескольких переменных;
  - «Массовое присвоение» — записать значения сразу в несколько переменных.
- **«Значение/Выражение»** — что записать или что посчитать. Как заполнять поле для каждого типа — ниже.
- **«Имя результирующей переменной»** — в какую переменную попадёт результат.
- **«Тип результирующей переменной»** — «Локальная переменная» (своя у каждого контакта) или «Глобальная переменная» (общая для всего бота).

Для типа «Массовое присвоение» этих трёх полей нет — вместо них список «Переменные для присвоения».

### Произвольное значение

В поле «Значение/Выражение» напишите текст или число. Здесь работают [автоподстановки](https://support.watbot.ru/chatbots/templates), в том числе [выражения](https://support.watbot.ru/chatbots/templates/expressions), — так можно собрать значение из других переменных и данных контакта.

![Блок «Операция над переменной»: в переменную записывается сумма заказа](https://support.watbot.ru/_media/ru/01-chatbots/03-blocks/04-contact-data/_images/variable-operation-free.webp?v=1791781230)

### Математическое выражение

Считает новое значение переменной из её текущего значения. В выражении переменная всегда пишется как `x` — какое бы имя вы ни указали в поле «Имя результирующей переменной». Например, `x + 1` увеличит переменную на единицу.

- **«Исходное значение переменной»** — если до этого блока переменной ещё не было, расчёт начнётся с этого числа.

![Блок «Операция над переменной»: скидка 10 % к сумме заказа выражением x * 0.9](https://support.watbot.ru/_media/ru/01-chatbots/03-blocks/04-contact-data/_images/variable-operation-math.webp?v=1791781230)

### Математическое выражение 2.0

В выражении можно использовать несколько переменных. В списке **«Переменные для выражения»** нажмите «Локальная переменная» или «Глобальная переменная» и укажите имя переменной. Каждая получит короткое имя: первая — `x`, вторая — `y`, третья — `z` и так далее. Эти короткие имена и пишутся в выражении, например `(x + y) * 10`.

Если какой-то из переменных ещё нет, вместо неё подставится 0.

![Блок «Операция над переменной»: скидка считается из суммы заказа и процента скидки](https://support.watbot.ru/_media/ru/01-chatbots/03-blocks/04-contact-data/_images/variable-operation-math2.webp?v=1791781230)

### Что можно писать в математическом выражении

- Числа, знаки `+`, `-`, `*`, `/` и скобки.
- Дробные числа — через точку: `1.24`.
- Округление вверх до целого: оберните всё выражение в `ceil( )`, например `ceil(x / 3)`.

Автоподстановки `{{ }}` в математических выражениях не работают — используйте короткие имена переменных. Всё, кроме чисел, знаков и коротких имён, бот из выражения убирает.

### Массовое присвоение

В списке **«Переменные для присвоения»** нажмите «Локальная переменная» или «Глобальная переменная», укажите имя переменной и её значение. Строк можно добавить несколько — блок запишет все значения разом. В значениях работают [автоподстановки](https://support.watbot.ru/chatbots/templates), но только с простыми функциями.

![Блок «Операция над переменной»: четыре переменные заказа заполняются разом](https://support.watbot.ru/_media/ru/01-chatbots/03-blocks/04-contact-data/_images/variable-operation-mass.webp?v=1791781230)

## Выходы

- «Продолжить» — бот идёт дальше сразу после записи.

## Особенности

- Если переменной с таким именем ещё нет, блок её создаст.
- Результат записывается как текст. Вставить его в сообщение можно так же, как любую другую переменную.
- Если в математическом выражении ошибка — например, деление на ноль или в переменной вместо числа лежит текст, — в переменную запишется сообщение об ошибке. Проверьте выражение в предпросмотре бота.
