Формулировка проблемы: на данный момент в
Arta Synergy
имеется две проблемы с маршрутами
реестров:
в «предварительных» и «последующих» блоках маршрута по реестру имеется возможность указать произвольного пользователя в качестве исполнителя работы типа «работа», и эта работа будет создана для него без всяких проверок;
нет возможности создать такую структуру маршрута реестра, в которой будут несколько неизменяемых на клиенте работ, затем несколько изменяемых, далее опять неизменяемые и т. п., хотя в некоторых вариантах использования реестра такая возможность необходима.
Решение: необходимо реализовать возможность создания произвольного количества блоков маршрута реестра. Каждый блок имеет собственное название, редактируемое пользователем, а также тип: нередактируемый и редактируемый.
Нередактируемый блок маршрута может включать в себя все процессы действия:
Работа;
Согласование;
Утверждение;
Ознакомление;
Отправка документа;
Блокирующий процесс;
Отправка документа по форме;
Назначение на должность;
Перевод;
Увольнение;
Копирование в личное дело;
Назначение календаря;
Событие реестра;
Результат запроса;
Работа по форме;
Ввод значения показателя;
Таймер;
Запуск маршрута по шаблону;
Условный переход;
Регистрация;
Маршрут;
Нередактируемый блок имеет опцию «Отображать при сохранении». Если она активна, то при запуске маршрута этот блок будет отображён в диалоге «Запуск маршрута» в виде нередактируемой таблицы.
Работы, которые должны быть созданы согласно этапам и подэтапам нередактируемого блока маршрута, создаются по особой схеме без проверок подчинённости (см. задачу 2.52.8393), «Схема создания работ по шаблону маршрута»).
Редактируемый блок может включать в себя процессы следующих типов:
Работа;
Согласование;
Утверждение;
Ознакомление;
Отправка документа;
Регистрация;
Маршрут;
Редактируемый блок всегда отображается в диалоге запуска маршрута, даже если в Конфигураторе туда не было добавлено ни одного этапа. Значения полей этапов маршрута в диалоге запуска берутся из настроек, сделанных в Конфигураторе. Однако (в противоположность старому поведению блоков «предварительные» и «последующие этапы») создавать работы без проверок из редактируемых блоков нельзя: при загрузке этапов редактируемого блока в диалог запуска маршрута должна производится проверка значений полей «Ответственный» для этапов с процессами типа «Работа», «Согласование», «Утверждение», «Ознакомление» и «Отправка документа» (а также для этапов вложенного «Маршрута» с такими же процессами):
Процессы типа «Работа»:
Выбранные в качестве ответственных сотрудники проверяются относительно возможности постановки им работ по организационной структуре. Если для каких-либо из них такой возможности нет и опция «Конфигуратор → Документооборот → Доп. настройки потоков работ → Разрешить добавлять соисполнителей к работам, не являющихся подчинёнными» неактивна, то при открытии диалога с таким маршрутом необходимо удалять тэги с такими пользователями из соответствующих полей этапов маршрута.
Диалог выбора пользователей для таких полей также должен быть ограничен только теми сотрудниками, которым можно ставить работы (опять же, с учётом опции «Разрешить добавлять соисполнителей к работам, не являющихся подчинёнными»).
Работы по процессу типа «Работа» должны создаваться согласно схемам «Создание одиночной работы» и «Набор параллельных работ типа «Работа»» (см. задачу 2.52.8393).
Процессы типа «Согласование», «Утверждение», «Ознакомление» и «Отправка документа»:
Выбранные в качестве ответственных сотрудники проверяются относительно функциональности, соответствующей настройке «Конфигуратор →
Документооборот → Доп. настройки потоков работ → Максимальный уровень иерархии вверх, которому можно отправить документ». Если для каких-либо выбранных сотрудников отсутствует возможность отправки работы, то при открытии диалога с таким маршрутом необходимо удалять тэги с такими пользователями из соответствующих полей этапов маршрута.
Диалог выбора пользователей для таких полей также должен быть ограничен только теми сотрудниками, которым имеется возможность отправки.
Работы по процессу типов «Согласование», «Утверждение» и «Ознакомление» должны быть созданы согласно «Схеме отправки на согласование» (см. задачу 2.52.8393).
Блоки обоих типов настраиваются для какого-либо события по реестру («Активация», «Изменение» либо «Удаление») в Конфигураторе. Их можно:
Добавлять;
Перемещать по порядку;
Удалять;
Название блока обязательно к заполнению, и спользуется для наименования блока маршрута на клиентской стороне (см. иллюстрацию).
При обновлении системы до версии, содержащей описанное в данной задаче изменение, должна быть проведена конвертация имеющихся маршрутов реестров следующим образом:
«Предварительные этапы» → редактируемый блок с названием «Предварительные этапы»
«Действия» → нередактируемый блок с названием «Действия»
«Последующие этапы» → редактируемый блок с названием «Последующие этапы»
Содержимое блоков должно быть сохранено.
При этом, если в исходном блоке «Предварительные этапы» или «Последующие этапы» встречается один или несколько процессов типа «Блокирующий процесс», то этот блок должен быть разбит на несколько блоков следующим образом:
Каждый встречающийся в исходном блоке «Блокирующий процесс» помещается в отдельный нередактируемый блок с названием «Блокирующий процесс»
Оставшиеся от этого разбиения этапы исходного блока объединяются в редактируемые блоки с названиями «Предварительные этапы» или «Последующие этапы» (в зависимости от типа исходного блока)
Порядок новых редактируемых и нередактируемых блоков должен быть таким, чтобы сохранился порядок следования этапов исходного блока
Кроме вышеперечисленного, в отчёт по изменению базы данных (Административное приложение → Обслуживание системы → Управление БД) необходимо выводить следующие предупреждения:
Если в результирующих редактируемых блоках имеются этапы маршрута типа «Работа», «Согласование», «Утверждение», «Ознакомление», «Отправка документа», содержащие заполненное поле «Ответственный», необходимо выводить предупреждение (с красным цветом текста):
«В маршруте реестра название-реестра имеются редактируемые блоки с заполненным полем «Ответственный». При запуске такого маршрута пользователем будут применены проверки, которые могут привести к удалению заполненного значения»
Для каждого найденного в «Предварительных» или «Последующих этапах» блокирующего процесса необходимо выводить предупреждение (с желтым цветом текста):
«В маршруте реестра название-реестра в блоке название-блока найден блокирующий процесс. Этот процесс был выделен в отдельный нередактируемый блок»