514 lines
53 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Настройка шаблонов маршрутов
## Общие сведения
Для *каждого* **типа документа** *каждой* **компании** в системе необходимо создать шаблоны маршрутов, создаваемых по умолчанию в документах. В них содержатся настройки, позволяющие или запрещающие их редактировать, а также этапы и их участники.
Для одного и того же типа документа одной компании можно создать несколько возможных шаблонов маршрутов. При создании маршрута пользователю будет предложено выбрать один из них.
Чтобы настроить маршруты для документов, необходимо в группе "Управление процессами" выбрать пункт "Шаблоны маршрутов".
Откроется реестр шаблонов маршрутов.
![Пример реестра шаблонов маршрутов](./media/registry.png){: .zoom}
В столбце "Филиалы" отображается на каких филиалах используется шаблон маршрутов.
## Копирование шаблона маршрута
Для дублирования существующего документа необходимо отметить этот документ в реестре и нажать кнопку "Копировать" на верхней панели инструментов.
![Копировать](media/copy.png)
Откроется всплывающее окно, в котором необходимо подтвердить копирование нажатием на кнопку "Скопировать". После этого появится всплывающее окно "Создание шаблона". В нем необходимо выбрать в какую организацию необходимо скопировать данный документ. Если выбрать ту же организацию, то выбранный документ продублируется в этой же организации, после чего автоматически откроется скопированный документ.
![Сорг](media/Corg.png)
![Скопированный маршрут](media/copyRoute.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="Создать">.
Откроется форма для создания нового шаблона.
![Создание нового шаблона маршрута](./media/formInit.png){: .zoom}
В документе необходимо заполнить следующие поля:
- **Наименование:** это пользовательское наименование шаблона, т.е. то название маршрута, которое пользователь видит при нажатии на кнопку "Создать маршрут".
- **Тип документа** перечень типов карточек СЭД, для которых действует шаблон, может принимать несколько значений.
- **Табличная часть** заполняется участниками шаблона маршрута документа.
- **Филиал:** по умолчанию заполняется той организацией, в которой создается шаблон. Поле необходимо в случае холдинговых организаций.
Поля, не требующие обязательного заполнения:
- **Период действия** задает период действия шаблона. Если период не задан, то шаблон действует бессрочно.
- **Логины | Пользователи** задает список пользователей, способных создать такой шаблон маршрута в документе.
- **Подразделение:** указывает на то, в каком подразделении действует шаблон, т.е. каждый пользователь прикреплен в системе к определенному подразделению, которое считывается автоматически при создании нового документа. По этой принадлежности фильтруются шаблоны. Если подразделение в шаблоне не задано, то шаблон действует по всей организации.
- **Подтип документа** - указывает на то, для какого подтипа документа действует шаблон. Если подтип не указан, то шаблон маршрута действует для всех подтипов документа.
- **Роли приложения** задает список ролей, хотя бы одной из которых должен обладать пользователь, чтобы создать такой шаблон маршрута в документе.
- **Настройки этапа инициирования** в данном блоке заполняются условия по времени на обработку для инициатора документа.
**Инициатор является участником** при включении данной опции инициатор документа автоматически добавляется в первый этап маршрута. При выключенной опции инициатор будет отсутствовать в маршруте документа.
**Время на обработку, дней:** - устанавливается срок обработки документа в рабочих днях согласно производственному календарю (по умолчанию - два рабочих дня).
**Время на обработку, часов:** - устанавливается срок обработки документа в рабочих часах согласно производственному календарю (по умолчанию - два рабочих часа).
- **Жесткий маршрут** при включении данной опции данный маршрут становится не редактируемым для всех. Т.е. текущий участник маршрута не может вставлять или удалять согласующих в маршрут.
- **Новые элементы без действия:** при включении данной опции в маршрут можно будет добавлять этапы без заполнения всех участников.
- **Длительность в часах:** при включении данной опции в маршрут можно будет определять сроки отправки документов по маршруту в днях и часах согласно производственному календарю, для этого в табличной части появится столбец *Часов*.
- **Количество дней этапа инициатора:** - указывается количество рабочих дней согласно производственному календарю для обработки документа инициатору (по умолчанию 2 рабочих дня).
- **Скрывать оповещение об одном участнике маршрута** - при включении данной опции в маршрут, в случае, если в маршруте только один участник, не будет выводиться системное предупреждение о том, что маршрут не содержит других участников
![Системное предупреждение](./media/image1.png)
**Действие первого участника:** - Если включена опция **Инициатор является участником**, то можно задать инициатору действие, которое ему потребуется выполнить на первом этапе, при помощи поля Действие первого участника. По умолчанию таким действием является "Инициатор (запустить маршрут)".
**Разрешенный статус первого участника:** - Данная опция распространяется только на первого участника маршрута. Если данное значение не задано - то у первого участника при нажатии на кнопку "Отправить" будет выходить набор допустимых статусов для назначенного действия, которые заданы в [настройках документа](../Настройка документов/Настройка документов.md). Если значение задано - то у первого участника при нажатии на кнопку "Отправить" будет выходить на выбор только указанный в настройках статус.
!!! warning
Все расчеты проводятся по рабочим часам согласно производственному календарю, которые указываются в глобальных настройках.
![Время](media/time.png)
**Окно подтверждения** - Данная опция распространяется на каждого участника маршрута. Если данное значение не задано - то у каждого участника, при нажатии на кнопку "Отправить" будет выходить окно с набором допустимых статусов и возможностью дополнить документ комментарием. Если значение задано - то у каждого участника при нажатии на кнопку "Отправить" будет выходить на выбор только указанный в настройках статус:
* **Все (показывать в полном виде)** - показывается окно в полном виде;
* **Только комментарии** - показывается только окно для комментариев к документу;
* **Не показывать, если статус допускает** - при согласовании документа окно не показывается. В случае несогласования документа при отправке будет показываться окно для комментариев к документу.
!!! note
В случае если необходимо для каждого этапа настроить индивидуальный статус, то нужно заполнить [столбец "Окно подтверждения"](#столбец_окно_подтверждения) в табличной части. Необходимо обратить внимание в случае заполнения только опции "Окно подтверждения", указанный статус распространяется на каждого участника маршрута. Если в табличной части для каждого статуса указаны разные статусы, то отображаться будут они, в независимости от того какой статус выбран в опции.
Далее необходимо заполнить табличную часть. В качестве примера создадим шаблон следующего вида:
**1 этап**
- Инициатор документа
**2 этап**
- Смирнов А.А. согласовать
- Денежная Е.К. согласовать
**3 этап**
- Елизарьева Е.А. согласовать
На втором этапе согласование параллельное.
Для того, чтобы инициатор в 1 этапе определялся автоматически, в документе шаблона маршрута включается опция (ставится галочка в поле) "Инициатор является участником".
В табличной части начинаем заполнение со второго этапа. Чтобы добавить новый этап необходимо нажать на кнопку <img src="../media/stageDown.png" alt="+ Этап">. Количество участников в добавленном этапе зависит от числа, указанного в поле справа от этой кнопки, по умолчанию 1.
В маршруте после проделанных действий добавятся минимум 2 пустые строки: одна с номером этапа, вторая и далее для указания новых участников маршрута.
![Добавленные пустые строки](./media/newStr.png){: .zoom}
В поле "Наименование этапа" можно внести название этапа в поле справа от номера этапа.
В строке для участника этапа в поле "Пользователь" необходимо выбрать пользователя из списка, а в поле "Совершить действие" указать действие, которое пользователь должен будет совершить, например "Согласовать" или "Подписать".
Столбец **И/ИЛИ** означает тип завершения этапа:
- Если необходимо, чтобы на этапе все участники выполнили порученное действие, необходимо указать **И**.
- Если необходимо, чтобы на этапе порученное действие выполнил хотя бы один участник, необходимо указать **ИЛИ**.
По умолчанию задается тип завершения **И**. Тип завершения **ИЛИ**, как правило, необходим на этапах регистрации с несколькими регистраторами.
![Заполнен первый участник второго этапа](./media/secondStageFirstPart.png){: .zoom}
!!! note
В данной таблице номера этапов начинаются с 1. Но при выборе этого шаблона в документе номера этапов автоматически пересчитаются, т.е. данный этап станет вторым (2).
Чтобы в этап добавить нового участника, необходимо выделить строку с первым этапом и нажать на кнопку <img src="../media/participant.png" alt="+ Участник">.
Добавится новая строка, в которой также необходимо выбрать пользователя и его действие по маршруту.
![Заполнен второй участник второго этапа](./media/secondStageFull.png){: .zoom}
По аналогии в маршрут добавляется этап. Для этого необходимо нажать на кнопку ![новый этап](media/newEtap.png).
![Пример заполненного документа "Шаблон маршрута"](./media/thirdStageFull.png){: .zoom}
Для того чтобы удалить участника или этап необходимо выделить соответствующий элемент (строку с номером этапа или участником) и нажать на кнопку <img src="../media/deleteButton.png" alt="Удалить">.
#### Столбец "Служебное наименование из конструктора"
Используется в случае, когда заранее неизвестно какой именно участник будет участвовать в маршруте, но его выбор зависит от реквизитов создаваемого документа. В этом случае в [конструкторе документов](../Конструктор документов/Конструктор документов.md) в дополнительном атрибуте необходимо указать тип атрибута и служебное наименование. Например в подтипе "Документы о приеме на работу" заполняется атрибут "Работник" со служебным наименованием **#worker1#**.
![Конструктор](media/konstruktor.png){: .zoom}
После этого в настройке шаблонов маршрутов в необходимо заполнить столбец **"Служебное наименование из конструктора"** тем же служебным наименованием, которое использовалось в конструкторе документов. **При этом столбец "Пользователь" не заполняется.** Если в данный столбец указать пользователя, в этом случае система автоматически проставит его в маршрут, не учитывая заполненное служебное наименование.
![Шаблон](media/shablon.png){: .zoom}
Впоследствии при создании маршрута в подтипе "Документы о приеме на работу" будет автоматически определяться участник, которого указали в атрибуте в карточке документа.
![Участник](media/uchastnik.png){: .zoom}
#### Столбец "Окно подтверждения"
Заполняется в случае, когда необходимо для каждого этапа настроить индивидуальный статус отображения окна при отправке документа далее по маршруту. Если значение задано - то у каждого участника при нажатии на кнопку "Отправить" будет выходить на выбор только указанный в настройках статус:
* **Все (показывать в полном виде)** - показывается окно в полном виде;
* **Только комментарии** - показывается только окно для комментариев к документу;
* **Не показывать, если статус допускает** - при согласовании документа окно не показывается. В случае несогласования документа при отправке будет показываться окно для комментариев к документу.
![Окно](media/window.png){: .zoom}
#### Столбец "Рассылка"
Используется в случае, когда необходимо направить документ определенной группе пользователей, которые не участвуют в маршруте. В этом случае настраивается вначале необходимая [группа рассылки](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/%D0%9A%D0%AD%D0%94%D0%9E/%D0%93%D1%80%D1%83%D0%BF%D0%BF%D1%8B %D1%80%D0%B0%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B8/%D0%93%D1%80%D1%83%D0%BF%D0%BF%D1%8B %D1%80%D0%B0%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B8/). После этого данная группа выбирается из выпадающего списка и указывается статус маршрута при каком статусе выбранной группе будет направлена рассылка.
![Группа](media/group.png){: .zoom}
![Рассылка](media/rassylka.png){: .zoom}
В данном примере указано что после согласования заявления Макеевым С.П., документ поступит на обработку Елизарьевой Е.А., и одновременно с помощью [списка рассылки](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/%D0%9A%D0%AD%D0%94%D0%9E/%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0 %D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2/%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0 %D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2/#%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0%D0%BC_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B0_%D0%B2_%D1%80%D0%B5%D0%B5%D1%81%D1%82%D1%80%D0%B0%D1%85_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2) направится пользователям Кузнецовой А.А. и Солодовниковой М.П..
![Макеев](media/makeev.png){: .zoom}
![Руководители](media/rukovoditeli.png){: .zoom}
Документ сохраняется с помощью кнопок "Сохранить" и "Сохранить и выйти".
## Сервисные функции
В списке пользователей также можно увидеть элементы списка, отсутствующие в списке пользователей. Такие элементы начинаются со слова _Service_ и называются сервисными функциями. При создании маршрута документа вместо них будут подставлены пользователи, отвечающим заданным условиям:
<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.RecipientCopy</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.StaffTrainingChief</strong></td>
<td>автоматически определяющая руководителя сотрудника в заявках на обучение. Данные поставляются из столбца "Руководитель" в <a href="../../УОП/Планирование обучения/Заявки на обучение/Заявки на обучение/">заявке на обучение</a>.</td>
</tr>
<tr>
<td><strong>Service.Worker</strong></td>
<td>определяющая логин сотрудника, указанного в поле "Работник" в документе "Заявления от сотрудника".</td>
</tr>
</table>
<!-- - **_Service.ListOf.Workers_** - определяющая логин сотрудника, указанного в поле "Работник" в тиражированном заявлении, а также определяющая пользователей в соответствующий этап маршрута в документе на подписание. -->
## Автоматическая подстановка руководителей в маршрут
Существует несколько способов, при помощи которых можно настроить автоматическую подстановку руководителя (руководителей) инициатора документа. Первый требует индивидуальной настройки пользователей, а другие более общие и позволяет автоматически добавлять в маршрут нескольких руководителей разного уровня.
**На данный момент не рекомендуется использовать несколько способов одновременно.**
!!! warning
Маршрут согласования через [организационную](ерез_организационную_структуру) либо [управленческую](ерез_управленческую_структуру) структуры, должен включать этап согласования руководителем. У данного этапа должно быть указано служебное слово в наименовании **Согласование руководителем**. При наличии данного служебного наименования в наименовании срабатывает проверка на наличие руководителя у сотрудника.
![Этап](media/Etap.png)
При отсутствии руководителя у инициатора документа, или при не указании служебного слова в наименовании этапа, при подписании документа, система выдаст оповещение об отсутствии руководителя для согласования.
![Нет руководителя](media/netRukovoditel.png)
### Через сервисную функцию
Данный способ рекомендуется в случае настройки по функциональной подчиненности, когда руководителя работника невозможно определить по организационной структуре. В таком случае руководитель работника указывается индивидуально для каждого работника [в документе "Настройка пользователя", поле "Руководитель"](../Настройка пользователей/Настройка пользователей.md). Обычно это поле заполняется при создании сотрудника или смене его руководителя.
![Пример настройки пользователя с руководителем](./media/userSettingsExample.png){: .zoom}
В шаблоне маршрута в качестве пользователя нужно в качестве участника выбрать **Service.Chief**.
![Пример шаблона с руководителем через Service.Chief](./media/templateWithChiefExample.png){: .zoom}
В итоге после создания маршрута в этапе "Руководитель" будет проставлен пользователь, указанный в настройке пользователя-инициатора маршрута.
![Пример маршрута с руководителем через Service.Chief](./media/routeExample.png){: .zoom}
### Через организационную структуру
Данный способ заключается в автоматическом определении руководителей сотрудника по организационной структуре. В маршрут вставляются руководители подразделений согласно организационной структуре, начиная с самого нижнего уровня, где числится сотрудник.
Преимущества:
- Не нужно настраивать руководителя для каждого работника.
- При смене руководителя нет необходимости перенастраивать шаблон маршрута или настройку для каждого работника.
<!-- Данный способ включается при помощи заполнения поля "InternalName" значением **DynamicFromDepartment**. Создаваемый таким способом маршрут называется динамическим. Использовать сервисную функцию Service.Chief не требуется. Этапы, заданные в таблице в шаблоне маршрута, будут вставлены после этапов с руководителями.
![Пример шаблона с руководителем через InternalName](./media/templateInterNameExample.png){: .zoom}
В итоге после создания маршрута будет создано один или несколько этапов, содержащих руководителей текущего и головных подразделений.
Первый этап (или второй, если первый по умолчанию для инициатора) состоит из всех сотрудников с должностями, которые имеют категорию "Руководители" или "Топ руководители", и находятся в подразделении инициатора маршрута. При этом потребуется подпись каждого из участников этапа. Следующий этап строится по тому же принципу, однако с руководителями из родительского подразделения на уровень выше.
Группировка этапов и их участников осуществляется по подразделениям.
Количество сформированных этапов зависит от количества подразделений более высокого уровня. Руководители будут собираться по всем вышестоящим подразделениям, начиная с подразделения инициатора маршрута.
![Пример динамического маршрута с руководителем](./media/routeDynamicExample.png){: .zoom} -->
В шаблоне маршрута в качестве пользователя нужно в качестве участника выбрать Service.ListOf.ChiefsByStaff.
![Оргструктура](media/orgStructure.png){: .zoom}
В итоге после создания маршрута в этапе "Руководитель" будет (будут) проставлен руководитель (руководители) по организационной структуре.
![Оргструктура шаблон](media/orgStrucMarsch.png){: .zoom}
Если в подразделении нет сотрудников с требуемой руководящей должностью, а таковой требуется в качестве участника маршрута, необходимо указать его в поле "Руководитель" документа ["Подразделение"]. Такое возможно при временном назначении руководителя подразделения или при наличии прикрепления у сотрудника к другому подразделению.
В приведённом примере участник второго этапа обладает должностью с категорией "Руководители", а участник третьего этапа назначен в качестве руководителя подразделения.
### Через управленческую структуру
Данный способ заключается в автоматическом определении руководителей сотрудника по управленческой структуре.
В шаблоне маршрута в качестве пользователя нужно в качестве участника выбрать Service.ListOf.Chiefs. У руководителя совершенное действие необходимо указать "Согласовать".
![Управленческая структура](media/uprStructura.png){: .zoom}
В итоге после создания маршрута в этапе "Руководитель" будет (будут) проставлен руководитель (руководители) по управленческой структуре.
![Дерево](media/derevo.png)
![Маршрут](media/uprStrMarshrut.png)
### Настраиваемый шаблон для тиражируемых заявлений
Для тиражируемых заявлений должен быть настроен шаблон маршрута согласования. Для этого необходимо заполнить поле "InternalName" значением **CopyEmployeeStatement**.
!!! warning
На каждой организации должен быть заведен пользователь с логином **CopyEmployee**. (ФИО - Автоматическое тиражирование заявлений) с ролью **hr_docflow_worker** (или **docflow**). От имени указанного пользователя будут направляться тиражированные заявления.
На первом этапе указывается проставляется пользователь с логином **CopyEmployee** с назначенным действием "Инициатор (запустить маршрут)". На втором этапе указывается сервисная функция **Service.ListOf.Workers**, которая подставит работника в маршрут.
!!! warning
Данный шаблон должен быть заведен на каждой организации
![Шаблон тиражируемого заявления](media/shablonTirazhiruem.png){: .zoom}
![Маршрут тиражируемого заявления](media/marshrutTirazh.png){: .zoom}
## Настраиваемые ограничения
Шаблоны маршрутов также можно фильтровать по произвольным условиям или устанавливать фильтры, зависящие от реквизитов самого согласуемого документа.
Для этого в документе "Шаблоны маршрутов" нужно перейти на вкладку "Настраиваемые ограничения".
![Настраиваемые ограничения](media/nastrOgranicheniya.png){: .zoom}
Настраиваемые ограничения работают следующим образом: сначала система подбирает шаблоны по правилам из вкладки "Основная", затем из них отсекает те, что не подходят по настраиваемым ограничениям.
В поле “Основная таблица документа” указывается наименование таблицы, к которой привязан документ. В поле "Дочерняя таблица документа" указывается табличная часть документа. Например: для документа "СЗ на командировку" основная таблица будет DocflowDocument, дочерняя DocflowDocumentDetail. Для фильтрации в дочерней таблице документа нужно что бы были заполнены оба поля “Основная таблица документа” и "Дочерняя таблица документа".
!!! warning
Для PostgreSQL сначала пишется схема, потом наименование таблицы в кавычках. Пример: dfd."DocflowDocument".
![Пример заполненной вкладки "Настраиваемые ограничения-дочерняя таблица"](media/tableOgran.png){: .zoom}
Ознакомиться с названиями таблиц можно в разделе ["Набор возможных документов и их основных полей"](../Настройка документов/Настройка документов.md#таблица).
Поле "Примечание" заполняется при необходимости.
![Пример заполненной вкладки "Настраиваемые ограничения-примечание"](media/note.png){: .zoom}
В таблице "Настройка" добавляем строку с помощью кнопки "Добавить".
В столбце "Поле фильтра»" пишется условие на языке SQL, по которому будет осуществляться фильтрация. Пример: COALESCE(head."Subject",' ') = 'Москва'. В данном примере фильтр отработает по полю "Куда Страна/Город", где в данных будет указано слово "Москва". Под SQL-выражением head подразумевается таблица, указанная в поле "Основная таблица документа".
![Пример заполненной вкладки "Настраиваемые ограничения-фильтр"](media/filtr.png){: .zoom}
В столбце "Произвольное выражение" пишется условие на языке SQL, по которому будет осуществляться ограничение. Пример: not exists(select 1 from dbo.DocflowDocument where VCode = @docCode and DocTemplate = 17). Параметр @docCode указывает на текущий код обрабатываемого документа.
![Пример заполненной вкладки "Настраиваемые ограничения-фильтр2"](media/filtr2.png){: .zoom}
### Примеры настраиваемых ограничений
#### Пример настраиваемого ограничения для [корректирующего заявления](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/%D0%9A%D0%AD%D0%94%D0%9E/%D0%97%D0%B0%D1%8F%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F %D0%BE%D1%82 %D1%81%D0%BE%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2/%D0%97%D0%B0%D1%8F%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F %D0%BE%D1%82 %D1%81%D0%BE%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2/#%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%B7%D0%B0%D1%8F%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F)
`(Head."TypeName" = 'EmployeeStatement' and
Head."DocumentSubtype" in (133,134)
)`
Где 133,134 - VCode подтипов заявлений.
#### Пример настраиваемых ограничений для поля "Срочность" во [входящем документе](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/%D0%A1%D0%AD%D0%94/%D0%92%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D0%B9%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82/%D0%92%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D0%B9%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82/), [исходящем документе](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/%D0%A1%D0%AD%D0%94/%D0%98%D1%81%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D0%B9%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82/%D0%98%D1%81%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D0%B9%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82/), [служебной записке](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/%D0%A1%D0%AD%D0%94/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F%20%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%BA%D0%B0/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F%20%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%BA%D0%B0/), [организационно-распорядительном документе](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/%D0%A1%D0%AD%D0%94/%D0%9E%D0%A0%D0%94/%D0%9E%D0%A0%D0%94/):
<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/readRoute.png)
В данном примере указано, что пользователь у которого присутствует роль **hr_docflow_hr** сможет редактировать жесткий маршрут.
!!! warning
Редактировать возможно только входящий, исходящий, поручения, организационно-распорядительные документы, служебные записки, доверенности на конструкторе
!!! note
Если данная табличная часть не заполнена, то жесткий маршрут к редактированию недоступен.