# Генерация excel-отчетов

## 1. Введение

**Генерация отчетов** — это сервис, который позволяет автоматизировать формирование отчетов по указанному алгоритму и с учетом указанных фильтров.

## 2. Принцип работы

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8Hmatgh-jIGQyf%2F0.jpeg?generation=1617623642526055\&alt=media)

При создании новой записи в каталоге **«Отчеты»** запускается **«Сценарий генерации отчета».** Далее сценарий собирает данные по заранее заложенному алгоритму и с учетом указанных фильтро&#x432;**,** из получившихся данных формируется отчет по заранее заданному шаблону и сохраняется в поле файл карточки отчета в каталоге **«Отчеты»**.

## 3. Реализация

### 3.1. Настройка структуры данных

#### 3.1.1. Создание и настройка каталога «Отчеты»

Создайте каталог **«Отчеты»**. Данный каталог является «хранилищем» сгенерированных отчетов, именно здесь они будут храниться. При создании каталога нужно добавить и настроить поля следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8ITbWmeFMq4aAm%2F1.png?generation=1617623642544279\&alt=media)

* **Типы отчетов** (связанный каталог).\
  \&#xNAN;*Описание:* Данный каталог является «справочником», в котором содержатся все типы шаблонов.
* **Компании** (связанный каталог).\
  \&#xNAN;*Описание:* Данный каталог является «справочником», в котором содержатся все компании.

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8JKovaZKYtGsk8%2F2.png?generation=1617623642588971\&alt=media)

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8K82yRXR12UI1A%2F3.png?generation=1617623642590158\&alt=media)

* **Услуга** (связанный каталог).\
  \&#xNAN;*Описание:* Данный каталог является «справочником», в котором содержатся все типы услуг.
* **Статус формирования** (статус).\
  \&#xNAN;*Описание:* Отражает на какой стадии сейчас находится генерация.
* **Описание ошибки** (текст).\
  \&#xNAN;*Описание:* Описывает ошибку.
* **Файл** (файл).\
  \&#xNAN;*Описание:* В данном поле будет хранится сгенерированный отчет.

#### 3.1.2. Создание и настройка каталога «Типы отчетов»

Создайте каталог **«Типы отчетов»**. Данный каталог предназначен для хранения шаблонов отчетов. При создании каталога нужно добавить и настроить поля следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8LXO-gg2uonF1I%2F4.png?generation=1617623642562041\&alt=media)

* **Название** (текст).\
  \&#xNAN;*Описание:* Название для типа отчета.
* **Шаблон** (файл).\
  \&#xNAN;*Описание:* В данном поле указывается шаблон для генерации отчета.

#### 3.1.3. Создание и настройка каталога «Компании»

Создайте каталог **«Компании»**. Данный каталог предназначен для хранения данных о компаниях, которым мы оказываем услуги. При создании каталога нужно добавить и настроить поля следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8MCwJzATEg7EgQ%2F5.png?generation=1617623642553995\&alt=media)

* **Название** (текст).\
  \&#xNAN;*Описание:* Название для компании.

#### 3.1.4. Создание и настройка каталога «Услуги»

Создайте каталог **«Услуги»**. Данный каталог предназначен для хранения данных о предоставляемых нами услугах. При создании каталога нужно добавить и настроить поля следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8NL3YjMZAjx4E6%2F6.png?generation=1617623642559116\&alt=media)

* **Название** (текст).\
  \&#xNAN;*Описание:* Название для услуги.

#### 3.1.5. Создание и настройка каталога «Заявки»

Создайте каталог **«Заявки»**. Данный каталог предназначен для хранения всего перечня наших заявок. При создании каталога нужно добавить и настроить поля следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8OLZsn2y8KTkRq%2F7.png?generation=1617623642559869\&alt=media)

* **Дата заявки** (дата).\
  \&#xNAN;*Описание:* Дата поступления заявки.
* **Статус заявки** (статус).\
  \&#xNAN;*Описание:* В каком статусе сейчас находится заявка.
* **Компания** (связанный каталог).\
  \&#xNAN;*Описание:* Данный каталог является «справочником», в котором содержатся все компании.

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8PfYi4_5zrVAlx%2F8.png?generation=1617623642614212\&alt=media)

* **Услуга** (связанный каталог).\
  \&#xNAN;*Описание:* Данный каталог является «справочником», в котором содержатся все типы услуг.
* **Сумма** (число).\
  \&#xNAN;*Описание:* Общая сумма оказанных нами услуг.

### 3.2. Настройка автоматизации

#### 3.2.1. Создание и настройка события

Для создания события нужно зайти в каталог **«События»** (обычно он находится в отделе Управление). Нажать кнопку Добавить и заполнить карточку события как указано на скриншоте ниже.

Карточка события выглядит следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8QWMCLzZi6aTQM%2F9.png?generation=1617623642545322\&alt=media)

#### 3.2.2. Создание и настройка сценария

Создайте сценарий в каталоге **«Сценарии»**. Скачайте файл сценария и добавьте его в поле.  Данный сценарий предназначен для генерации отчетов. При создании сценария нужно добавить и настроить компоненты следующим образом:

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2F3JJ8cnyDhmFhb4qP5TFI%2F%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B9.png?alt=media&#x26;token=04df0519-5040-40b9-a1b5-774fc9e485a8" alt=""><figcaption></figcaption></figure>

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

**3.2.2.1. Компонент «company && service»**

Требуется изменить компонент «company && service»:

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FuN2sl8UuhgORs7MZC58A%2Fcompany%26%26service.png?alt=media&#x26;token=2f7c413f-5b1b-4edb-9f35-10c755a9aac0" alt=""><figcaption></figcaption></figure>

В переменных service лежит значение поля «Услуга» из каталога «Отчет».

В переменных company лежит значение поля «Компания» из каталога «Отчет».

**3.2.2.2.Компонент «Найти записи заявок»**

Требуется изменить компонент **«Найти записи заявок:**

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FReyLXh8dgxg5xFktfYx6%2F%D0%BD%D0%B0%D0%B9%D1%82%D0%B8%20%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8%20%D0%B7%D0%B0%D1%8F%D0%B2%D0%BE%D0%BA.png?alt=media&#x26;token=b0981846-1e08-462c-9d6f-877cc4a04989" alt=""><figcaption></figcaption></figure>

В поле «Каталог» необходимо указать ID каталога **«Заявки»**, либо в выпадающем списке выбрать каталог **«Заявки»**

**3.2.2.3 Компонент «Структура каталога»**

В поле **«ID каталога»** нужно указать ID каталога **«Заявки»**, либо в выпадающем списке указать каталог **«Заявки».**

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FvnpnV3HmUar8945z56E0%2F%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B0.png?alt=media&#x26;token=29ff8e4c-b2d5-4554-b7ff-160f5b0ae12e" alt=""><figcaption></figcaption></figure>

**3.2.2.4.Компонент «Массив с данными для документа»**

Требуется изменить компонент **«Код (javascript)»:**

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FJROehulUmTdcHzo4tuZf%2F%D0%9C%D0%B0%D1%81%D1%81%D0%B8%D0%B2%20%D1%81%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8%20%D0%B4%D0%BB%D1%8F%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0.png?alt=media&#x26;token=581d496a-98dd-4a74-ac7d-47f50f714a5f" alt=""><figcaption></figcaption></figure>

Изменить r.values\[ 2 ] на r.values\[ id поля «Дата заявки» из каталога «Заявки» ]. Изменить r.values\[ 3 ] на r.values\[ id поля «Статус заявки» из каталога «Заявки» ].

Изменить r.values\[ 4 ] на r.values\[ id поля «Компания» из каталога «Заявки» ].

Изменить r.values\[ 5 ] на r.values\[ id поля «Услуга» из каталога «Заявки» ].

Изменить r.values\[ 7 ] на r.values\[ id поля «Сумма» из каталога «Заявки» ]

**3.2.2.5.Компонент «Изменить запись отчета»**

Требуется изменить компонент **«Изменить запись отчета»:**

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2F793IEhKnd3xgU4cBqavX%2F%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C%20%D0%BE%D1%82%D1%87%D0%B5%D1%82%D0%B0.png?alt=media&#x26;token=80bc34b8-dbe6-45bf-9d3c-171d0768a54b" alt=""><figcaption></figcaption></figure>

В значение полей изменить значения с 8 на API ID поля «Статус формирования» в каталоге «Отчет».

Добавляем созданный сценарий в поле «Выполнить» в карточке события созданного в пункте 3.2.1.

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8XVeWb4pVKqcqT%2F16.png?generation=1617623642554403\&alt=media)

#### 3.2.3 Создание шаблона Отчета

Для создания шаблона нужно создать или [скачать excel файл](https://docs.google.com/spreadsheets/d/1UEWvKIje3uYj7pV0wkUGY6fG7VLjweuT/edit?usp=sharing\&ouid=102912363003679873017\&rtpof=true\&sd=true) следующего вида:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8YWY5bMv8Pnysb%2F17.png?generation=1617623642642439\&alt=media)

Теперь нужно загрузить его в систему. Для этого необходимо перейти в каталог «Типы отчетов» и создать карточку следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8ZBbLy7dcjeY4S%2F18.png?generation=1617623642542168\&alt=media)

## 4. Тестирование

Тестирование функционала происходит следующим образом. Создаем карточку отчета в каталоге «Отчет»

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8_GMlwMj-Qy_kf%2F19.png?generation=1617623642621761\&alt=media)

Заполняем поля «Тип отчета» и «Услуга»

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8aSOpjV_LJuLmZ%2F20.png?generation=1617623642547325\&alt=media)

Проверяем сгенерированный документ:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8b1xjCJgTAuQHR%2F21.png?generation=1617623642564734\&alt=media)

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fbpium-documentation%2F-MXWsID5E-v_84m5QhXz%2F-MXWsS8cLmIA5NkZcDKP%2F22.png?generation=1617623642573418\&alt=media)
