# Настройка шаблонов маршрутов

## Общие сведения

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

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

Чтобы настроить маршруты для документов, необходимо в Меню в поисковой строке ввести - "Шаблоны маршрутов".

Откроется реестр шаблонов маршрутов.

![Пример реестра шаблонов маршрутов](./media/registry.png)

В столбце "Филиалы" отображается на каких филиалах используется шаблон маршрутов.

## Копирование шаблона маршрута

Для дублирования существующего документа необходимо отметить этот документ в реестре и нажать кнопку "Копировать" на верхней панели инструментов.

![Копировать](media/copy.png)

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

![Сорг](media/Corg.png)

![Скопированный маршрут](./media/RouteTemplateForm-1.png)

Если выбрать другую организацию, напротив поля "Разрешить этот же шаблон для выбранной организации" не ставить галочку и нажать "Создать", то выбранный документ продублируется в выбранную организацию. Код документа при копировании будет изменен.

![Копирование](media/copyToCorg.png)

![Сорг](media/CopiedCorg.png)

Если выбрать другую организацию, напротив поля "Разрешить этот же шаблон для выбранной организации" поставить галочку, и нажать "Создать", то выбранный документ будет доступен для использования в выбранной организации, а документ дублироваться не будет. Код документа при этом в обоих организациях будет один и тот же.

![Corg](media/Corg2.png)

![Corg](media/Corg4.png)

![Corg](media/corg3.png)

## Привязка к организации

Для привязки / открепления шаблона маршрута к организации необходимо отметить этот документ в реестре и нажать кнопку "Привязка к организации" на верхней панели инструментов.

![Привязка](media/privaz.png)

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

![Сорг](media/privaz2.png)

## Создание нового шаблона маршрута

Для создания нового шаблона маршрута необходимо нажать на кнопку <img src="media/create.png" alt="Создать">.

Откроется форма для создания нового шаблона.

![alt text](./media/RouteTemplateForm-2.png)

В документе необходимо заполнить следующие поля:

- **Наименование:** – это пользовательское наименование шаблона, т.е. то название маршрута, которое пользователь видит при нажатии на кнопку "Создать маршрут".

- **Тип документа** – перечень типов карточек СЭД, для которых действует шаблон, может принимать несколько значений.

- **Табличная часть** – заполняется участниками шаблона маршрута документа.

- **Филиал:** – по умолчанию заполняется той организацией, в которой создается шаблон. Поле необходимо в случае холдинговых организаций.

Поля, не требующие обязательного заполнения:

- **Период действия** – задает период действия шаблона. Если период не задан, то шаблон действует бессрочно.

- **Логины | Пользователи** – задает список пользователей, способных создать такой шаблон маршрута в документе.

- **Подразделение:** – указывает на то, в каком подразделении действует шаблон, т.е. каждый пользователь прикреплен в системе к определенному подразделению, которое считывается автоматически при создании нового документа. По этой принадлежности фильтруются шаблоны. Если подразделение в шаблоне не задано, то шаблон действует по всей организации.

- **Время на обработку по умолчанию, дней / часов:** - устанавливается срок обработки документа в рабочих днях согласно производственному календарю при добавлении нового этапа согласования. В левом поле указываются дни, в правом - часы. **Заполняется только либо поле со днями либо с часами.** В случае если данные поля не заполнены, по умолчанию заполняется 2 рабочих дня.

- **Без замещения** - данная шалочка служит, если необходимо задать шаблону запрет на подписание документа через замещение. Так же стоит принять во внимание что потенциально вместе с включенной галочкой _Без замещение_ в разделе **"Настройки этапа инициирования"**, необходимо в таблице с этапами, напротив необходимого действия поставить галочку в соответствующей колонке. Данная настройка по запрету подписания под замещением работает только если проставлены галочки в обеих местах.

- **Группа рассылки** - поле не обязательное для заполнения. Служит данное поле для того, чтобы при отправке документа по маршруту автоматически рассылался данный документ пользователям для ознакомления, согласно выбранной группе рассылки. 

!!! Примечание  
    Если ввести в первом поле **"Время на обработку по умолчанию, дней"** значение (например _2 дня_), а потом во втором поле **"Время на обработку по умолчанию, часов"** (например _2 часа_). То введенное значение в последнее поле (поле с количеством часов) удалит введенное количество дней в первом поле (поле с количеством дней).

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

- **Роли приложения** – задает список ролей, хотя бы одной из которых должен обладать пользователь, чтобы создать такой шаблон маршрута в документе.

- **Настройки этапа инициирования** в данном блоке заполняются условия по времени на обработку для инициатора документа.

**Инициатор является участником** – при включении данной опции инициатор документа автоматически добавляется в первый этап маршрута. При выключенной опции инициатор будет отсутствовать в маршруте документа.

**Время на обработку, дней:** - устанавливается срок обработки документа в рабочих днях согласно производственному календарю (по умолчанию - два рабочих дня).

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

**Только сам:** - скрывает документ в реестре и документообороте на _"Главной форме"_, если документ находится на первом этапе.

- **Жесткий маршрут** – при включении данной опции данный маршрут становится не редактируемым для всех. Т.е. текущий участник маршрута не может вставлять или удалять согласующих в маршрут.

- **Новые элементы без действия:** – при включении данной опции в маршрут можно будет добавлять этапы без заполнения всех участников.

- **Длительность в часах:** – при включении данной опции в маршрут можно будет определять сроки отправки документов по маршруту в днях и часах согласно производственному календарю, для этого в табличной части появится столбец *Часов*.

- **Количество дней этапа инициатора:** - указывается количество рабочих дней согласно производственному календарю для обработки документа инициатору (по умолчанию 2 рабочих дня).

- **Скрывать предупреждение об одном участнике маршрута** - при включении данной опции в маршрут, в случае, если в маршруте только один участник, не будет выводиться системное предупреждение о том, что маршрут не содержит других участников

- **Запрет согласования своих документов** - данная настройка запрещает согласовывать документы под замещением инициатора. 

- **При отзыве строить итерацию из шаблона** - при включенной данной опции, система при отзыве документа автоматически строить итерацию маршрута согласно шаблону. 

**Действие первого участника:** - Если включена опция **Инициатор является участником**, то можно задать инициатору действие, которое ему потребуется выполнить на первом этапе, при помощи поля Действие первого  участника. По умолчанию таким действием является "Инициатор (запустить маршрут)".

**Разрешенный статус первого участника:** - Данная опция распространяется только на первого участника маршрута. Если данное значение не задано - то у первого участника при нажатии на кнопку "Отправить" будет выходить набор допустимых статусов для назначенного действия, которые заданы в [настройках документа](../Настройка документов/index.md). Если значение задано - то у первого участника при нажатии на кнопку "Отправить" будет выходить на выбор только указанный в настройках статус.

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

    ![Время](media/time.png)

    Время задается в секундах. Например, рабочий день с 09:00 до 18:00, в перерасчете на секунды получается 32 400 и 64 800. 

    Начало обеденного перерыва указывается аналогично. Чтобы вычислить время, например, с 13:15 до 14:00 в секундах:

    **13:15 — это 13 часов и 15 минут**

    В секундах: **13×3600+15×60=47400+900=48300**

    **14:00 — это 14 часов.**

    В секундах: 14×3600=50400 

**Окно подтверждения** -  Данная опция распространяется на каждого участника маршрута. Если данное значение не задано - то у каждого участника, при нажатии на кнопку "Отправить" будет выходить окно с набором допустимых статусов и возможностью дополнить документ комментарием. Если значение задано - то у каждого участника при нажатии на кнопку "Отправить" будет выходить на выбор только указанный в настройках статус:

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

!!! note
    В случае если необходимо для каждого этапа настроить индивидуальный статус, то нужно заполнить [столбец "Окно подтверждения"](#столбец_окно_подтверждения) в табличной части. Необходимо обратить внимание в случае заполнения только опции "Окно подтверждения", указанный статус распространяется на каждого участника маршрута. Если в табличной части для каждого статуса указаны разные статусы, то отображаться будут они, в независимости от того какой статус выбран в опции.

Далее необходимо заполнить табличную часть. В качестве примера создадим шаблон следующего вида:

**1 этап**

- Инициатор документа

**2 этап**

- Смирнов А.А. – согласовать
- Денежная Е.К. – согласовать

**3 этап**

- Елизарьева Е.А. – согласовать

На втором этапе согласование параллельное.

Для того, чтобы инициатор в 1 этапе определялся автоматически, в документе шаблона маршрута включается опция (ставится галочка в поле) "Инициатор является участником".

В табличной части начинаем заполнение со второго этапа. Чтобы добавить новый этап необходимо нажать на кнопку <img src="media/stageDown.png" alt="+ Этап">. Количество участников в добавленном этапе зависит от числа, указанного в поле справа от этой кнопки, по умолчанию – 1.

В маршруте после проделанных действий добавятся минимум 2 пустые строки: одна с номером этапа, вторая и далее – для указания новых участников маршрута.

![Добавленные пустые строки](./media/newStr.png)

В поле "Наименование этапа" можно внести название этапа в поле справа от номера этапа.

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

Столбец **И/ИЛИ** означает тип завершения этапа:

- Если необходимо, чтобы на этапе все участники выполнили порученное действие, необходимо указать **И**.

- Если необходимо, чтобы на этапе порученное действие выполнил хотя бы один участник, необходимо указать **ИЛИ**.

По умолчанию задается тип завершения **И**. Тип завершения **ИЛИ**, как правило, необходим на этапах регистрации с несколькими регистраторами.

![Заполнен первый участник второго этапа](./media/RouteScreen-2.png)

!!! note
    В данной таблице номера этапов начинаются с 1. Но при выборе этого шаблона в документе номера этапов автоматически пересчитаются, т.е. данный этап станет вторым (2).

Чтобы в этап добавить нового участника, необходимо выделить строку с первым этапом и нажать на кнопку <img src="media/participant.png" alt="+ Участник">.

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

![Заполнен второй участник второго этапа](./media/RouteScreen-3.png)

По аналогии в маршрут добавляется этап. Для этого необходимо нажать на кнопку ![новый этап](media/newEtap.png).

![Пример заполненного документа "Шаблон маршрута"](./media/RouteScreen-4.png)
Для того чтобы удалить участника или этап необходимо выделить соответствующий элемент (строку с номером этапа или участником) и нажать на кнопку <img src="media/deleteButton.png" alt="Удалить">.

В форме **"Шаблон маршрута"** имеется настроечное колесо через которую можно настроить отображение столбцов в таблице шаблона маршрута. Так же рядом находится кнопка "Экспорт" которая позволяет скачать в формате Excel заполненную таблицу шаблона.

![Рисунок](./media/RouteTemplateForm-3.png)

#### Столбец "Служебное наименование из конструктора"

Используется в случае, когда заранее неизвестно какой именно участник будет участвовать в маршруте, но его выбор зависит от реквизитов создаваемого документа. В этом случае в [конструкторе документов](../Конструктор документов/) в дополнительном атрибуте либо в табличной части необходимо указать тип атрибута и служебное наименование. Например в подтипе "Документы о приеме на работу" заполняется атрибут "Работник" со служебным наименованием **#worker1#**.

![Конструктор](media/konstruktor.png)

После этого в настройке шаблонов маршрутов в необходимо заполнить столбец **"Служебное наименование из конструктора"** тем же служебным наименованием, которое использовалось в конструкторе документов. **При этом столбец "Пользователь" не заполняется.** Если в данный столбец указать пользователя, в этом случае система автоматически проставит его в маршрут, не учитывая заполненное служебное наименование.

![Шаблон](./media/RouteTemplateForm-4.png)

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

![Участник](media/uchastnik.png)

#### Столбец "Окно подтверждения"

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

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

![Окно](./media/RouteTemplateForm-5.png)

#### Столбец "Группа пользователей"

Если в случае, когда необходимо в случае исполнения порученного действия через этап И объединить определенных пользователей и чтобы при обработке одним из пользователей из этой группы документ направлялся далее по маршруту не ожидая других пользователей которые находятся на данном этапе. Например, при увольнении сотрудника в системе создается "Обходной лист" в котором каждый отдел должен указать имеется ли у увольняющегося сотрудника задолжности либо они отсутствует. В этом случае, например, указываются несколько пользователей в один этап, проставляется признак И и указывается необходимая группа.

![alt text](media/image-2.png)

Далее при поступлении документа на этап группы "Основные средства" при обработке документа одним из пользователей документ направится далее по маршруту согласования не дожидаясь остальных согласовантов.

![alt text](media/image-3.png)

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

![alt text](media/image-4.png)

Группа пользователей создается в справочнике "Группы пользователей для шаблонов".

![alt text](media/image-5.png)

#### Столбец "Рассылка"

Используется в случае, когда необходимо направить документ определенной группе пользователей, которые не участвуют в маршруте. В этом случае настраивается вначале необходимая [группа рассылки](../Группы рассылки/index.md). После этого данная группа выбирается из выпадающего списка и указывается статус маршрута при каком статусе выбранной группе будет направлена рассылка.

![Группа](media/group.png)

![alt text](./media/RouteTemplateForm-6.png)

В данном примере указано что после согласования заявления Макеевым С.П., документ поступит на обработку Елизарьевой Е.А., и одновременно с помощью [списка рассылки](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Обработка документов/#список_рассылки) направится пользователям Кузнецовой А.А. и Солодовниковой М.П..

![Макеев](media/makeev.png)

![Руководители](media/rukovoditeli.png)

Документ сохраняется  с помощью кнопок "Сохранить" и "Сохранить и выйти".

## Сервисные функции

<table>
  <tr>
    <th style="width: 25%;">Название функции</th>
    <th>Определение</th>
  </tr>
  <tr>
    <td><strong>Service.Chief</strong></td>
    <td>автоматически определяющая руководителя инициатора маршрута документа. Данные берутся из документа «Настройка пользователей». В случае если сотрудник сам является руководителем, в этом случае подбирается руководитель подразделения. Если в подразделения также указан этот же сотрудник, в этом случае этап с согласованием руководителя автоматически удаляется.</td>
  </tr>
  <tr>
    <td><strong>Service.Clerk</strong></td>
    <td>аналогично Service.Curator.</td>
  </tr>
  <tr>
    <td><strong>Service.Curator</strong></td>
    <td>автоматически определяющая куратора документа, указанного в поле "Куратор" в Договоре или Дополнительном документе к договору.</td>
  </tr>
  <tr>
    <td><strong>Service.Initiator</strong></td>
    <td>автоматически определяющая инициатора маршрута документа. Данного пользователя можно подключать во всех этапах кроме первого, если есть необходимость, чтобы инициатор появляется в ходе согласования. Т.е. после согласования на регистрацию документ поступит вновь к инициатору.</td>
  </tr>
  <tr>
    <td><strong>Service.ListOf.AgreementUsers</strong></td>
    <td>автоматически определяющая дополнительного согласованта в служебных записках.</td>
  </tr>
  <tr>
    <td><strong>Service.ListOf.AllChiefs</strong></td>
    <td>автоматически определяющая руководителя сотрудника из управленческой структуры, <a href="../Настройка пользователей/">настроек пользователей</a> и по подразделению.</td>
  </tr>
  <tr>
    <td><strong>Service.ListOf.Chiefs</strong></td>
    <td>автоматически определяющая руководителя инициатора маршрута документа из списка руководителей из управленческой структуры. В настройках учетной политики предприятия можно настроить определение руководителей по подуровням подразделений. Для этого настраивается константа <strong>СЭД_числоПодуровнейПодразделенийРуководителейУпрСтруктуры</strong> с заполненным значением константа. Если у константы значение = 1, то тогда ищется руководитель в текущем подразделении. Если 2 в текущем и на уровень выше.</td>
  </tr>
  <tr>
    <td><strong>Service.ListOf.Chiefs2</strong></td>
    <td>автоматически определяющая курирующего руководителя инициатора маршрута документа из списка руководителей из управленческой структуры.</td>
  </tr>
  <tr>
    <td><strong>Service.ListOf.ChiefsByStaff</strong></td>
    <td>автоматически определяющая руководителя инициатора маршрута документа из списка категории должностей по подразделению. В настройках учетной политики предприятия необходимо настроить определение руководителей по подразделениям. Для этого настраивается константа <strong>СЭД_числоПодуровнейПодразделенийРуководителейОргСтруктуры</strong> с заполненным числовым значением количества уровней по дереву, по которым необходимо найти руководителей. Например, если указать значение равное 1, то функция рассчитывает подразделение на один уровень вверх от той, в которой работает пользователь. По этим подразделениям находятся сотрудники с руководящими должностями. Также, если сотрудник сам является начальником отдела (категория должности 1 или 2), а в учетной политике настроено согласование на 1 уровень наверх по штатной расстановке, то в маршрут подставляется его руководитель выше.</td>
  </tr>
  <tr>
    <td><strong>Service.ListOf.COrg_HR_Doc_Sign</strong></td>
    <td>автоматически определяющая логины из <strong>Настройки учетной политики предприятия</strong> с закладки <strong>Ответственные лица</strong>, те, кто указан как Подписант кадровых приказов, и у которых период дата попадает в период действия.</td>
  </tr>
  <tr>
    <td><strong>Service.ListOf.FunctionalChiefs</strong></td>
    <td>автоматически определяющая руководителя сотрудника из управленческой структуры и <a href="../Настройка пользователей/">настроек пользователей</a>.</td>
  </tr>
  <tr>
    <td><strong>Service.ListOf.Recipient</strong></td>
    <td>автоматически определяющая получателя (-ей) служебной записки из таблицы "Кому".</td>
  </tr>
    <tr>
    <td><strong>Service.Recipient</strong></td>
    <td>автоматически определяющая получателя служебной записки из таблицы "Кому".</td>
  </tr>
  <tr>
    <td><strong>Service.Signer</strong></td>
    <td>автоматически определяющая подписанта в служебных записках.</td>
  </tr>
    <tr>
    <td><strong>Service.ServiceDeskCustomer</strong></td>
    <td>автоматически определяющая заказчика в заявках в <a href="../Заявка в техническую поддержку/">техническую поддержку.</a></td>
  </tr>
  <tr>
    <td><strong>Service.StaffTrainingChief</strong></td>
    <td>автоматически определяющая руководителя сотрудника в заявках на обучение. Данные поставляются из столбца "Руководитель" в <a href="../Заявки на обучение/">заявке на обучение</a>.</td>
  </tr>
  <tr>
    <td><strong>Service.Worker</strong></td>
    <td>определяющая логин сотрудника, указанного в поле "Работник" в документе "Заявления от сотрудника".</td>
  </tr>
</table>

В списке пользователей также можно увидеть элементы списка, отсутствующие в списке пользователей. Такие элементы называются сервисными функциями. Также возможно использовать [служебных пользователей](../Настройка служебных пользователей/index.md). При создании маршрута документа вместо них будут подставлены пользователи, отвечающим заданным условиям: -->

## Автоматическая подстановка руководителей в маршрут

Существует несколько способов, при помощи которых можно настроить автоматическую подстановку руководителя (руководителей) инициатора документа через [сервисную функцию](#сервисные_функции), [организационную](#через_организационную_структуру) либо [управленческую](#через_управленческую_структуру) структуры. Первый требует индивидуальной настройки пользователей, а другие более общие и позволяет автоматически добавлять в маршрут нескольких руководителей разного уровня.  

**На данный момент не рекомендуется использовать несколько способов одновременно.**

!!! warning
     Маршрут согласования через [организационную](#через_организационную_структуру) либо [управленческую](#через_управленческую_структуру) структуры, должен включать этап согласования руководителем. У данного этапа должно быть указано служебное слово в наименовании **Согласование руководителем**. При наличии данного служебного наименования в наименовании срабатывает проверка на наличие руководителя у сотрудника.
     
     ![Этап](media/Etap.png)
     
     При отсутствии руководителя у инициатора документа, или при не указании служебного слова в наименовании этапа, при подписании документа, система выдаст оповещение об отсутствии руководителя для согласования.

     ![Нет руководителя](media/netRukovoditel.png)

### Через сервисную функцию

Данный способ рекомендуется в случае настройки по функциональной подчиненности, когда руководителя работника невозможно определить по организационной структуре. В таком случае руководитель работника указывается индивидуально для каждого работника [в документе "Настройка пользователя", поле "Руководитель"](../Настройка пользователей/index.md). Обычно это поле заполняется при создании сотрудника или смене его руководителя.

![Пример настройки пользователя с руководителем](./media/userSettingsExample.png)

В шаблоне маршрута в качестве пользователя нужно в качестве участника выбрать **Service.Chief**.

![Пример шаблона с руководителем через Service.Chief](./media/RouteTemplateForm-7.png)

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

![Пример маршрута с руководителем через Service.Chief](./media/routeExample.png)

### Через организационную структуру

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

Преимущества:

- Не нужно настраивать руководителя для каждого работника.

- При смене руководителя нет необходимости перенастраивать шаблон маршрута или настройку для каждого работника.

<!-- Данный способ включается при помощи заполнения поля "InternalName" значением **DynamicFromDepartment**. Создаваемый таким способом маршрут называется динамическим. Использовать сервисную функцию Service.Chief не требуется. Этапы, заданные в таблице в шаблоне маршрута, будут вставлены после этапов с руководителями.

![Пример шаблона с руководителем через InternalName](./media/templateInterNameExample.png)

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

Первый этап (или второй, если первый по умолчанию для инициатора) состоит из всех сотрудников с должностями, которые имеют категорию "Руководители" или "Топ руководители", и находятся в подразделении инициатора маршрута. При этом потребуется подпись каждого из участников этапа. Следующий этап строится по тому же принципу, однако с руководителями из родительского подразделения на уровень выше. 

Группировка этапов и их участников осуществляется по подразделениям.

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

![Пример динамического маршрута с руководителем](./media/routeDynamicExample.png) -->

В шаблоне маршрута в качестве пользователя нужно в качестве участника выбрать Service.ListOf.ChiefsByStaff.

![Оргструктура](./media/RouteTemplateForm-8.png)

В итоге после создания маршрута в этапе "Руководитель" будет (будут) проставлен руководитель (руководители) по организационной структуре.

![Оргструктура шаблон](media/orgStrucMarsch.png)

Если в подразделении нет сотрудников с требуемой руководящей должностью, а таковой требуется в качестве участника маршрута, необходимо указать его в поле "Руководитель" документа "Подразделение". Такое возможно при временном назначении руководителя подразделения или при наличии прикрепления у сотрудника к другому подразделению.

В приведённом примере участник второго этапа обладает должностью с категорией "Руководители", а участник третьего этапа назначен в качестве руководителя подразделения.

### Через управленческую структуру

Данный способ заключается в автоматическом определении руководителей сотрудника по управленческой структуре. 

В шаблоне маршрута в качестве пользователя нужно в качестве участника выбрать Service.ListOf.Chiefs. У руководителя совершенное действие необходимо указать "Согласовать".

![Управленческая структура](./media/RouteTemplateForm-7.png)

В итоге после создания маршрута в этапе "Руководитель" будет (будут) проставлен руководитель (руководители) по управленческой структуре.

![Дерево](media/derevo.png)

![Маршрут](media/uprStrMarshrut.png)

### Настраиваемый шаблон для тиражируемых заявлений

Для тиражируемых заявлений должен быть настроен шаблон маршрута согласования. Для этого необходимо заполнить  поле "InternalName" значением **CopyEmployeeStatement**.

!!! warning
    На каждой организации должен быть заведен пользователь с логином **CopyEmployee**. (ФИО - Автоматическое тиражирование заявлений) с ролью **hr_docflow_worker** (или **docflow**). От имени указанного пользователя будут направляться тиражированные заявления.

На первом этапе указывается проставляется пользователь с логином **CopyEmployee** с назначенным действием "Инициатор (запустить маршрут)". На втором этапе указывается сервисная функция **Service.ListOf.Workers**, которая подставит работника в маршрут.

!!! warning
    Данный шаблон должен быть заведен на каждой организации

![Шаблон тиражируемого заявления](./media/RouteTemplateForm-9.png)

![Маршрут тиражируемого заявления](media/marshrutTirazh.png)

## Настраиваемые ограничения

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

![Настраиваемые ограничения](./media/RouteScreen-12.png)

Настраиваемые ограничения работают следующим образом: сначала система подбирает шаблоны по правилам из вкладки "Основная", затем из них отсекает те, что не подходят по настраиваемым ограничениям.
В поле “Основная таблица документа” указывается наименование таблицы, к которой привязан документ. В поле "Дочерняя таблица документа" указывается табличная часть документа.  Например: для документа "СЗ на командировку" основная таблица будет DocflowDocument, дочерняя DocflowDocumentDetail. Для фильтрации в дочерней таблице документа нужно что бы были заполнены оба поля “Основная таблица документа” и "Дочерняя таблица документа".

!!! warning
    Для PostgreSQL сначала пишется схема, потом наименование таблицы в кавычках. Пример: dfd."DocflowDocument".

![Пример заполненной вкладки "Настраиваемые ограничения-дочерняя таблица"](media/tableOgran.png)

Ознакомиться с названиями таблиц можно в разделе ["Набор возможных документов и их основных полей"](../Настройка документов/index.md#таблица).
Поле "Примечание" заполняется при необходимости. 

![Пример заполненной вкладки "Настраиваемые ограничения-примечание"](media/note.png)

В таблице "Настройка" добавляем строку с помощью кнопки "Добавить".

В столбце "Поле фильтра»" пишется условие на языке SQL, по которому будет осуществляться фильтрация. Пример: COALESCE(head."Subject",' ') = 'Москва'. В данном примере фильтр отработает по полю "Куда Страна/Город", где в данных будет указано слово "Москва". Под SQL-выражением head подразумевается таблица, указанная в поле "Основная таблица документа".

![Пример заполненной вкладки "Настраиваемые ограничения-фильтр"](media/filtr.png)

В столбце "Произвольное выражение" пишется условие на языке SQL, по которому будет осуществляться ограничение. Пример: not exists(select 1 from dbo.DocflowDocument where VCode = @docCode and DocTemplate = 17). Параметр @docCode указывает на текущий код обрабатываемого документа.

![Пример заполненной вкладки "Настраиваемые ограничения-фильтр2"](media/filtr2.png)

### Примеры настраиваемых ограничений

#### Пример настраиваемого ограничения для [корректирующего заявления](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Заявления от сотрудников/#создание_корректирующего_заявления)

`(Head."TypeName" = 'EmployeeStatement' and 
Head."DocumentSubtype" in (133,134)
)`

Где 133,134 - VCode подтипов заявлений.

#### Пример настраиваемых ограничений для поля "Срочность" во [входящем документе](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Входящий документ/), [исходящем документе](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Исходящий документ/), [служебной записке](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Служебная записка/), [организационно-распорядительном документе](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/ОРД/):

<style>
  table {
    border-collapse: collapse;
  }

  td,
  th {
    border: 1px solid gray;
    padding: 8px;
    text-align: center;
  }

  th:nth-child(3) {
    vertical-align: middle;
  }

  td em {
    font-style: italic;
  }

  td code {
    font-family: Consolas, monospace;
    white-space: pre-wrap;
  }
</style>

<table>
  <tr>
    <th>Тип документа</th>
    <th>Срочность</th>
    <th style="vertical-align: middle;">Настраиваемое ограничение</th>
  </tr>
  <tr>
    <td rowspan="2" style="vertical-align: middle;">Входящий документ</td>
    <td><em>срочный</em></td>
    <td><code>"(Head.""TypeName"" = 'IncomingDocument' and Head.""Urgency"" in (27) )"</code></td>
  </tr>
  <tr>
    <td><em>несрочный</em></td>
    <td><code>"(Head.""TypeName"" = 'IncomingDocument' and Head.""Urgency"" in (28) )"</code></td>
  </tr>
  <tr>
    <td rowspan="2" style="vertical-align: middle;">Исходящий документ</td>
    <td><em>срочный</em></td>
    <td><code>"(Head.""TypeName"" = 'OutgoingDocument' and Head.""Urgency"" in (27) )"</code></td>
  </tr>
  <tr>
    <td><em>несрочный</em></td>
    <td><code>"(Head.""TypeName"" = 'OutgoingDocument' and Head.""Urgency"" in (28) )"</code></td>
  </tr>
  <tr>
    <td rowspan="2" style="vertical-align: middle;">Служебная записка</td>
    <td><em>срочный</em></td>
    <td><code>"(Head.""TypeName"" = 'ServiceRecord' and Head.""Urgency"" in (27) )"</code></td>
  </tr>
  <tr>
    <td><em>несрочный</em></td>
    <td><code>"(Head.""TypeName"" = 'ServiceRecord' and Head.""Urgency"" in (28) )"</code></td>
  </tr>
  <tr>
    <td rowspan="2" style="vertical-align: middle;">ОРД</td>
    <td><em>срочный</em></td>
    <td><code>"(Head.""TypeName"" = 'OrganizationalDocument' and Head.""Urgency"" in (27) )"</code></td>
  </tr>
  <tr>
    <td><em>несрочный</em></td>
    <td><code>"(Head.""TypeName"" = 'OrganizationalDocument' and Head.""Urgency"" in (28) )"</code></td>
  </tr>
</table>



## Настройка доступа

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

![Редактирование маршрута](./media/RouteScreen-13.png)

В данном примере указано, что пользователь у которого присутствует роль **hr_docflow_hr** сможет редактировать жесткий маршрут.

!!! warning
    Редактировать возможно только входящий, исходящий, поручения, организационно-распорядительные документы, служебные записки, доверенности на конструкторе

!!! note
    Если данная табличная часть не заполнена, то жесткий маршрут к редактированию недоступен.