﻿# Создать архив через Archive Packer

> [HTML Version](work-with-archive-packer.html)

После [настройки модуля Archive Packer](archive-packer.md#archive-packer-settings) в дизайнере бизнес-процессов доступен специальный блок **Создать архив**. С его помощью вы можете в ходе процесса генерировать **.zip**-архив документов. 

В статье рассмотрим пример моделирования бизнес-процесса с блоком **Создать архив**, в который данные для генерации передаются из предшествующей задачи. Вы также можете [использовать скрипт для передачи данных в блок](#pack-archive-with-script) и размещать его в более сложных процессах.  

## Настройка процесса с блоком «Создать архив»

Для работы блока **Создать архив** в контексте процесса нужно добавить переменные, соответствующие [входным и выходным атрибутам](#archive-packer-attributes) блока. 

Вы можете создать отдельные свойства или добавить переменную типа **Приложение**, ссылающуюся на приложение, в контексте которого есть необходимые атрибуты.

Схема бизнес-процесса архивации может выглядеть следующим образом: 

(work-with-archive-packer-1.png)

Разместите на схеме блок [Задача.](/ru/help/platform/360012495611.html) Например, это может быть задача подготовить файлы для архивации. На её форму вынесите поля, чтобы ввести название и прикрепить файлы для архива. 

Затем на правой панели инструментов перейдите на вкладку **Интеграции**. Перетащите на схему блок **Создать архив**.

После блока создания архива вы можете настроить [оповещение](/ru/help/platform/360012495791.html) пользователя о завершении архивации и разместить задачу проверить результат. 

На форме финальной задачи вынесите поле, которое по завершении процесса будет заполнено ссылкой для скачивания архива в формате **.zip**. 

## Настройка блока «Создать архив»

Для настройки блока **Создать архив** дважды нажмите на него и заполните данные на вкладках. 

### Вкладка «Основное»

Укажите общую информацию об архиве:

(work-with-archive-packer-2.png)

- **Название** — введите название блока, которое будет отображаться на схеме процесса;

- **Название задачи** — создание архива выполняется автоматически без назначения задачи на пользователя. Поэтому настраивать формирование названия задачи не требуется, поле можно оставить пустым;

- **Присвоить выходные атрибуты в** — выберите, в каком контексте созданы переменные, в которые запишется результат работы блока:

	- **контекст процесса** — отметьте эту опцию, если переменные для сопоставления в настройках блока созданы в контексте процесса;

	- **приложение** — выберите опцию, а затем в поле **Переменная**\* укажите приложение, в которое будет записан результат работы блока.  

### Вкладка «Входные и выходные атрибуты»

На этой вкладке поля настроек блока сопоставляются с контекстом процесса или приложения. Сопоставляемые переменные должны быть одного типа:

(work-with-archive-packer-3.png)

- **Входные переменные** — укажите данные для архивации:

	- **Название архива** — название, которое будет присвоено архиву (без указания расширения **.zip**). Тип переменной: **Строка**;

	- **Файлы** — файлы для автоматической генерации в архив. Тип переменной: **Файлы**;

- **Выходные переменные** — выберите переменные, в которые будет записан результат работы блока:

	- **Архив** — сформированный файл архива. Тип переменной: **Файлы**. 

Свойство **JSON**, а также атрибуты для отслеживания диагностических данных **Ответ сервиса (create)**, **Идентификатор запроса** и **Ответ сервиса (get)** заполняются при [использовании скрипта для передачи данных в блок](#pack-archive-with-script). В данном примере это не требуется, так как свойства передаются из предшествующей задачи.  

### Вкладка «Время выполнения»

Заполнять данные на этой вкладке не нужно. Настройки используются, чтобы обозначить сроки выполнения [задач](/ru/help/platform/360012495611.html), а также определить, что произойдёт, если в указанное время задача не будет завершена. 

### Вкладка «Обработка ошибок»

На этой вкладке нужно указать, по какой ветке направится ход бизнес-процесса при возникновении ошибки в работе блока. Также вы можете настроить оповещение пользователей об ошибке.

(work-with-archive-packer-4.png)

- **Оповещение** — включите опцию и укажите пользователей, которым будет отправляться оповещение об ошибке в процессе. Выбрать можно пользователя, [группу](/ru/help/platform/360007146071.html), [элемент оргструктуры](/ru/help/platform/360003861992.html) или указать [контекстную переменную](/ru/help/platform/process_context.html), например инициатора процесса;

- **Прервать** — отметьте опцию, а затем в поле **Переход** укажите, по какой ветке направится процесс в случае возникновения ошибки. 

После завершения настроек нажмите кнопку **Сохранить**.  

## Использование скрипта для передачи данных в блок «Создать архив»

Вы можете настроить передачу пользовательских данных для генерации архива с помощью скрипта. 

Например, вам нужно ежемесячно создавать архив отчётов о проведении встреч с клиентами. Вы можете настроить скрипт на языке [TypeScript](https://www.typescriptlang.org/), чтобы в определённую дату получать архив документов, которые хранятся в определённой папке и разделе, содержат информацию об определённых событиях и т. д. Подробнее про принципы написания скриптов читайте в [справке ELMA365 TS SDK](https://tssdk.elma365.com/ru/latest/index.html).

Для этого в дизайнере бизнес-процесса на вкладке **Скрипт** пропишите скрипт для передачи данных с помощью JSON. 

Скрипт может выглядеть следующим образом:

(work-with-archive-packer-5.png)

В контексте процесса добавьте переменную типа **Строка (Текст)**, которая будет соответствовать в настройках блока **Создать архив** входному атрибуту **JSON**. В ходе выполнения процесса свойство заполняется, например, следующими данными: 

````
\{  
    archive\_name : "название файла архива (без расширения)",  
    directory : "идентификатор (guid) папки в разделе «Файлы» ELMA365, куда будет загружен созданный архив",  
		files : \[  
		  \{  
		    download\_url : "ссылка на скачивание архива",  
		    file\_name : "название файла в архиве",  
		    folder : "папка внутри архива/может быть вложенной/может быть пустым значением для корня"  
		  \}  
		\]  
  \}

````
В нужном месте на схеме процесса разместите блок **Создать архив** и [настройте](#pack-archive-settings) его. 

При использовании JSON вы также можете добавить в контекст процесса переменные для отслеживания случаев некорректной обработки запроса сервером. Это выходные атрибуты блока **Создать архив**:

- **Ответ сервиса (create)** — результат получения сервером запроса на архивацию. Тип переменной: **Строка (Текст)**;

- **Идентификатор запроса** — идентификационный номер запроса. Тип переменной: **Строка**;

- **Ответ сервиса (get)** — результат отправки сервером данных по запросу на архивацию. Тип переменной: **Строка (Текст)**.