# Урок 4. Простые вычисления

Самой простой функцией в системе является автоматический подсчет каких-либо сумм. Расскажем как настроить несложные вычисления.

{% embed url="<https://vimeo.com/1024367109>" %}

## Кейс

Система автоматически рассчитывает сумму при внесении данных по наименованию и количеству товара.

## Навыки

В этом уроке будут рассмотрены следующие **компетенции** и их навыки:

* **Принципы Бипиума:** понимание принципа проектирования
* **События:** изменение во время редактирования
* **Сценарии:** входные параметры, выходные параметры
* **Компоненты:** получить запись
* **Javascript:** базовые математические операторы
* **Отладка:** последовательное выполнение сценариев, базовые типы ошибок
* **Использование документации:** выходные параметры, типы данных

***

## В этом уроке

#### **Слайд: Событие изменения во время редактирования (0:19)**

Срабатывают после изменения значения поля записи, еще до отправки команды сохранения изменений в записи.

Каждое событие запускает процесс, передавая определенные входные параметры и ожидает от процесса в ответ определенных выходных переменных для возврата их инициатору события

**Входные параметры событий запроса создании записи:**

* **event** (объект) — параметры сработавшего события.
* **script** (объект) — параметры запущенного сценария.
* **user** (объект) — сотрудник вызвавший событие.
* **catalogId** (строка) — идентификатор каталога, в котором редактируют запись
* **recordId** (строка) — идентификатор редактируемой записи. Если сотрудник редактирует новую запись, то переменная recordId будет не задана.
* **values** (объект) — коллекция значений заполненных полей созданной записи. Ключи объекта — идентификаторы (ID) заполненных полей.
* **allValues** (объект) — коллекция значений всех полей редактируемой записи. Ключи объекта — идентификаторы (ID) всех полей.
* **prevValues** (объект) — коллекция предыдущих значений всех полей записи

**Выходные параметры событий запроса:**

* **$body** (объект) — объект с дополнительными параметрами:\
  &#x20;   **message** (строка) — сообщение для отображения сотруднику, в случае запрета.\
  &#x20;   **values** (объект) — коллекция значений полей для подстановки в карточку. Ключи объекта — идентификаторы (ID) полей.

#### **Демонстрация: Описание кейса (1:53)**

Система автоматически рассчитывает сумму при внесении данных по наименованию и количеству товара.

#### **Демонстрация: Создание события (2:15)**

1. В отделе «Управление» в каталоге «События» добавьте новую запись (событие, по которому будет запускаться процесс).
2. Укажите название. Например, ту задачу, которую выполняет процесс.
3. Выберите каталог, в котором хотите отслеживать изменение записей.
4. Выберите тип события для запуска сценария.&#x20;
5. В поле «Выполнить» выберите или создайте новый сценарий.

#### **Демонстрация: Создание сценария (3:12)**

1. В отделе «Управление» в каталоге «Сценарии» добавьте новую запись.
2. Укажите название сценария и нажмите «создать» в поле «Сценарий».
3. Нарисуйте сценарий: из панели компонентов выберите требуемые и расположите их в необходимой последовательности, задайте их свойства.

Компоненты:

* **Получить запись** — используется для получения значений полей конкретной записи из Бипиума по ее идентификатору. Процессы имеют доступ к записям минуя правовую политику.

## Домашнее задание

Для расширения знаний и подготовки к следующим урока изучите материалы:

* Описание компонента "Получить запись"\
  [https://docs.bpium.ru/processes/scripts/components/getrecord](https://bpium.ru/learn-scripts/lesson-4)
* Описание методов массивов в Javascript\
  ‍<https://learn.javascript.ru/array-methods>
* Описание методов объектов в Javascript\
  ‍[https://learn.javascript.ru/object#tsikl-for-in](https://docs.bpium.ru/processes/scripts/components/setvariables)
