Маршрут «Активация»: интерфейс и логика настройки
============================

На этом этапе мы настраиваем путь заявки при её подаче, то есть маршрут, по которому заявка пойдёт после создания и активации.

Для этого используется маршрут типа **«Активация»**.

.. admonition:: Основная рабочая область. 
    Редактор маршрутов состоит из трёх панелей, каждая из которых отвечает за свой тип этапов маршрута.
    **Панели редактора маршрутов**

    **Предварительные этапы**
    Содержат только стандартные процессы, которые выполняются до основных действий:

    * Работа
    * Согласование
    * Утверждение
    * Ознакомление
    * Отправка документа
    * Регистрация
    * Маршрут

    **Действия**  
    Ключевая часть маршрута.

    Этапы в этой панели:

    * могут автоматически получать данные из формы (по кодам компонентов);
    * изменяют объекты и состояние процесса в системе;
    * выполняются только после успешного завершения предварительных этапов (если они есть).
    
    **Последующие этапы**
    Также содержат только стандартные процессы и выполняются после действий (при необходимости).
    
Переход к созданию маршрута
----------------------------

**Шаг 1.** По нажатию на кнопку "+" в разделе **"Маршруты реестра"**, в выпаждающем списке выбрать тип маршрута **"Активация"**

**Шаг 2.** В открывшемся окне перейти к редактированию маршрута активации нажав кнопку редактирования:

.. image:: ../resources/img/edit.jpeg

**Шаг 3.** На панеле "Действия" нажимаем кнопку **"+"** чтобы добавить новый этап

.. figure:: ../resources/img/actions_panel.jpeg


**Шаг 4.** В открывшейся справа панели настройки этапа необходимо настроить этап в соответствии с ордером.

Каждый этап имеет свой результат выполнения (подписание, ввод комментария, автоматическое системное действие и другие операции, необходимые для бизнес-процесса)

Для того, чтобы понять какой именно тип действия нам необходим на каждом этапе, мы обращаемся к пункту ордера **2. Диаграмма процесса и шаги процесса** 

.. figure:: ../resources/img/order_process_steps.jpeg

Для того чтобы правильно построить бизнес-логику процесса, нам необходимо обращать внимание на вход и выход шага, и роль, которая его выполняет

Этап 1. Заполнение заявки
---------------------------

**Входом** операции является форма заявки, разработанная в системе и данные клиента, которые он вносит при заполнении формы.

**Выход** - заполненная по форме заявка на услугу.

На этом этапе не нужен дополнительный шаг процесса, т.к отправка заявки и будет являться первым шагом процесса.

Этап 2. Отправка заявки.
------------------------

**Вход** - подписание заявки при помощи ЭЦП.

**Выход** - заявка подписанная в системе.

Для реализации данного этапа нам потребуется тип действия "Работа по форме" с типом "Согласование"

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

**Предварительная настройка**

**Шаг 1.** Возвращаемся в форму заявки

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

**Шаг 3.** Внутрь таблицы добавляем компонент "Объекты Synergy" 

* задаем ему код например "entity_author"

* включаем настройку "Заполнять текущим пользователем"

**Шаг 4.** Полю задаем наименование "Автор"

**Шаг 5.** Сохраняем изменения
    
В результате этого, поле автоматически будет заполняться учетной записью пользователя, создавшего заявку.

**Создание этапа маршрута**

**Шаг 1.** В настройках этапа указываем 

* Тип действия - "Работа по форме"

* Название этапа - указываем согласно логике шага, например "Подписание заявки"

* Код этапа - необязательно, используется при обращении к этапу в скриптах или условиях.

* Ответственный - здесь необходимо указать код поля в котором будет находится автор заявки (entity_author) его мы создали в предварительном шаге 

* Тип работы - согласование

* Возврат - в этом поле указывается этап маршрута, к которому необходимо вернуться в случае отказа в согласовании (при необходимости). В нашем случае может оставить пустым.

**Шаг 2.** Сохраняем этап, нажав на иконку дискеты в панели настроек этапа.

.. figure:: ../resources/img/step1.jpeg

Этап 3. Регистрация заявки

**Вход** - подписанная в системе заявка

**Выход** - заявка со сформированным регистрационным номером

Формирование номера заявки в системе осуществляется на основе **счётчика**.

.. note:: 

    Счётчик — это базовая сущность системы, предназначенная для генерации последовательных числовых значений.
    Он используется для нумерации заявок, документов и других объектов.
    
Создание счетчика
^^^^^^^^^^^^^^^^^
    
**Шаг 1.** В дереве приложений выбираем папку в которой будут храниться счетчики

**Шаг 2.** Кликаем правой кнопкой мыши и выбираем Добавить → Базовые сущности → Счётчик 

**Шаг 3.** Открывается панель редактирования информации о счётчике:

* **Код** - Обязательное поле. 
Используется для обращения к счётчику в шаблоне номера.
*  **Начальное значение** - значение, с которого начинается нумерация.
* **Следующее значение** - должно быть не меньше начального.
* **Период сброса** - определяет, когда следующее значение будет сбрасываться к начальному.
Возможные варианты:

* Никогда (по умолчанию)
* Каждый день
* Каждую неделю
* Каждый месяц
* Каждый год

**Шаг 4.** Вводим необходимые значения и нажимаем кнопку "Сохранить"

После создания счетчика нам необходимо привязать его к шаблону номера, который мы потом поместим на форму.

Привязка счетчика к шаблону номера
^^^^^^^^^^^^^

**Шаг 1.** Выбрав нужную папку кликаем по ней правой кнопкой мыши Добавить → Документооборот → Шаблон номера

**Шаг 2.** В открывшемся окне создания шаблона номера указываем:

* Наименование - название счетчика или его назначение (например "Номер заявки на услуги ATLAS")
* Код - ставим логически правильный код или оставляем автоматически сгенерированный транслит
* Значение - помещаем сюда код ранее созданного нами счетчика в формате {код_счетчика}

**Шаг 3.** Сохраняем шаблон номера.

Добавление шаблона номера на форму
^^^^^^^^^^^^^^^^^

**Шаг 1.** Возвращаемся к форме заявки

**Шаг 2.** В поле "Порядковый номер заявки" выделяем компонент "номер"

**Шаг 3.** В строке "Шаблон номера" выбираем созданный нами шаблон

**Шаг 4.** Сохраняем форму

Сгенирированный автоматически номер будет являться регистрацией заявки в системе.

Этап 3. Отправка уведомления о номере заказа.
----------------------------------------------

**Вход** - подписанная ЭЦП и зарегистрированная в системе заявка на услугу

**Выход** - уведомление на почту клиента

 На данном этапе на почту клиента отправляется уведомление о регистрации заявки с указанием её номера.
 
 **Шаг 1.** В редакторе маршрута нажимаем кнопку "+" для добавления нового этапа
 
 **Шаг 2.** В настройках этапа выбираем тип действия **"Отправка письма на почту"**
 
 **Шаг 3.** Указываем:
 
 * Наименование этапа, например **"Отправка уведомления о номере заказа"**
 
 * Код - указывается при необходимости
 
 * Код поля на форме - подразумевает поле на форме с почтой клиента, на которую необходимо отправить уведомление. У нас например это textbox_mail
 
 * Тема письма с поддержкой HTML разметки - будет содержать тему письма
 
 * Тело письма с поддержкой HTML разметки - будет содержать основной текст письма с данными из нужных нам полей
 
 В нашем случае, согласно ТЗ (ордера) HTML шаблон письма будет выглядеть следующим образом:
 
 ``Ваша заявка на “ +  $listbox_type + ” зарегистрирована под номером “  + $counter_number + ”.``
 
где listbox_type - код поля "Тип заявки"

counter_number - код поля "Номер заявки"

"Ваша заявка на" и "зарегистрирована под номером" - это статический текст, который будет одинаковым в каждом письме.

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

    *	$listbox_type — значение поля Тип заявки
    *	$counter_number — значение номера заявки, сформированного счётчиком

Во время отправки письма система автоматически подставляет фактические значения этих полей из данных заявки.

 **Шаг 3.** Проверяем корректность письма и сохраняем этап.
 
 .. note::
    Кнопка **«Отправить тестовое письмо»** позволяет проверить работу уведомления прямо из маршрута, отправкой уведомления на почту. (Для этого в приложении должна быть настроена почтовая служба). После нажатия на кнопку система предложит выбрать уже созданную заявку в реестре, для того чтобы отправить письмо на указанную в заявке почту.


