# Операція зі змінною

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

![Панель налаштувань блоку «Операція зі змінною»](https://support.watbot.org/_media/uk/01-chatbots/03-blocks/04-contact-data/_images/variable-operation.webp?v=1791781231)

## Налаштування

- **«Тип операції»** — що саме робить блок:
  - «Довільний значення» — записати у змінну вказане значення;
  - «Математичний вираз» — змінити одну змінну: додати, відняти, помножити, поділити;
  - «Математичний вираз 2.0» — порахувати вираз із кількох змінних;
  - «Масове присвоєння» — записати значення одразу в кілька змінних.
- **«Значення / Вираз»** — що записати або що порахувати. Як заповнювати поле для кожного типу — нижче.
- **«Ім'я результуючої змінної»** — у яку змінну потрапить результат.
- **«Тип результуючої змінної»** — «Локальна змінна» (своя в кожного контакту) або «Глобальна змінна» (спільна для всього бота).

Для типу «Масове присвоєння» цих трьох полів немає — замість них список «Змінні для присвоєння».

### Довільне значення

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

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

### Математичний вираз

Рахує нове значення змінної з її поточного значення. У виразі змінна завжди пишеться як `x` — хоч би яке ім'я ви вказали в полі «Ім'я результуючої змінної». Наприклад, `x + 1` збільшить змінну на одиницю.

- **«Вихідне значення змінної»** — якщо до цього блоку змінної ще не було, розрахунок почнеться з цього числа.

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

### Математичний вираз 2.0

У виразі можна використовувати кілька змінних. У списку **«Змінні для виразів»** натисніть «Локальна змінна» або «Глобальна змінна» і вкажіть ім'я змінної. Кожна отримає коротке ім'я: перша — `x`, друга — `y`, третя — `z` і так далі. Ці короткі імена й пишуться у виразі, наприклад `(x + y) * 10`.

Якщо якоїсь зі змінних ще немає, замість неї підставиться 0.

![Блок «Операція зі змінною»: знижка рахується із суми замовлення та відсотка знижки](https://support.watbot.org/_media/uk/01-chatbots/03-blocks/04-contact-data/_images/variable-operation-math2.webp?v=1791781231)

### Що можна писати в математичному виразі

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

Автопідстановки `{{ }}` у математичних виразах не працюють — використовуйте короткі імена змінних. Усе, крім чисел, знаків і коротких імен, бот із виразу прибирає.

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

У списку **«Змінні для присвоєння»** натисніть «Локальна змінна» або «Глобальна змінна», вкажіть ім'я змінної та її значення. Рядків можна додати кілька — блок запише всі значення разом. У значеннях працюють [автопідстановки](https://support.watbot.org/uk/chatbots/templates), але лише з простими функціями.

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

## Виходи

- «Продовжити» — бот іде далі одразу після запису.

## Особливості

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