# Вычисление

Узел Вычисление позволяет вычислить значение выражения, а полученный результат сохраняется в этом же узле для дальнейшего использования другими узлами. Это мощный инструмент для вычисления, обработки и преобразования данных. По сути, он выполняет ту же функцию, что и вызов функции с присвоением результата переменной в языках программирования.

## Создание узла

Чтобы добавить узел «Вычисление», в интерфейсе настройки **рабочего процесса** нажмите кнопку с плюсом («+») в нужном месте потока:

![Узел Вычисление_Добавление](https://static-docs.nocobase.com/58a455540d26945251cd143eb4b16579.png)

## Настройка узла

![Узел Вычисление_Настройка](https://static-docs.nocobase.com/6a155de3f6a883d8cd1881b2d9c33874.png)

### Движок вычислений

Движок вычислений определяет синтаксис, который поддерживается выражением. В настоящее время доступны движки [Math.js](https://mathjs.org/) и [Formula.js](https://formulajs.info/). Каждый из них содержит множество встроенных функций и методов для работы с данными. Подробную информацию об их использовании вы найдете в официальной документации.

:::info{title=Примечание}
Обратите внимание, что разные движки по-разному работают с индексами массивов: в Math.js индексация начинается с `1`, а в Formula.js — с `0`.
:::

Если вам нужна простая конкатенация строк, вы можете воспользоваться «Шаблоном строки». Этот движок заменит переменные в выражении их соответствующими значениями и вернет объединенную строку.

### Выражение

Выражение представляет собой строковую запись формулы, которая может включать переменные, константы, операторы и поддерживаемые функции. Вы можете использовать переменные из контекста **рабочего процесса**, например, результаты предыдущих узлов или локальные переменные цикла.

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

## Пример

### Расчет общей стоимости заказа

Обычно заказ может включать несколько товаров, каждый из которых имеет свою цену и количество. Общая стоимость заказа рассчитывается как сумма произведений цен и количеств всех товаров. После загрузки списка позиций заказа (набора данных с отношением «один-ко-многим») вы можете использовать узел Вычисление для расчета общей стоимости заказа:

![Узел Вычисление_Пример_Настройка](https://static-docs.nocobase.com/85966b0116afb49aa966eeaa85e78dae.png)

Здесь функция `SUMPRODUCT` из Formula.js позволяет вычислить сумму произведений элементов двух массивов одинаковой длины, что и дает общую стоимость заказа.