Задача [#7581]: Произвольные изменяемые и неизменяемые блоки в маршрутах реестров

Формулировка проблемы: на данный момент в Arta Synergy имеется две проблемы с маршрутами реестров:

  1. в «предварительных» и «последующих» блоках маршрута по реестру имеется возможность указать произвольного пользователя в качестве исполнителя работы типа «работа», и эта работа будет создана для него без всяких проверок;

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

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

Нередактируемый блок маршрута может включать в себя все процессы действия:

Нередактируемый блок имеет опцию «Отображать при сохранении». Если она активна, то при запуске маршрута этот блок будет отображён в диалоге «Запуск маршрута» в виде нередактируемой таблицы.

Рисунок 543. Диалог запуска маршрута по шаблону с отображением нередактируемого блока

Диалог запуска маршрута по шаблону с отображением нередактируемого блока

Работы, которые должны быть созданы согласно этапам и подэтапам нередактируемого блока маршрута, создаются по особой схеме без проверок подчинённости (см. задачу 2.52.8393), «Схема создания работ по шаблону маршрута»).

Редактируемый блок может включать в себя процессы следующих типов:

Редактируемый блок всегда отображается в диалоге запуска маршрута, даже если в Конфигураторе туда не было добавлено ни одного этапа. Значения полей этапов маршрута в диалоге запуска берутся из настроек, сделанных в Конфигураторе. Однако (в противоположность старому поведению блоков «предварительные» и «последующие этапы») создавать работы без проверок из редактируемых блоков нельзя: при загрузке этапов редактируемого блока в диалог запуска маршрута должна производится проверка значений полей «Ответственный» для этапов с процессами типа «Работа», «Согласование», «Утверждение», «Ознакомление» и «Отправка документа» (а также для этапов вложенного «Маршрута» с такими же процессами):

Выбранные в качестве ответственных сотрудники проверяются относительно возможности постановки им работ по организационной структуре. Если для каких-либо из них такой возможности нет и опция «Конфигуратор → Документооборот → Доп. настройки потоков работ → Разрешить добавлять соисполнителей к работам, не являющихся подчинёнными» неактивна, то при открытии диалога с таким маршрутом необходимо удалять тэги с такими пользователями из соответствующих полей этапов маршрута.

Диалог выбора пользователей для таких полей также должен быть ограничен только теми сотрудниками, которым можно ставить работы (опять же, с учётом опции «Разрешить добавлять соисполнителей к работам, не являющихся подчинёнными»).

Работы по процессу типа «Работа» должны создаваться согласно схемам «Создание одиночной работы» и «Набор параллельных работ типа «Работа»» (см. задачу 2.52.8393).

Выбранные в качестве ответственных сотрудники проверяются относительно функциональности, соответствующей настройке «Конфигуратор →
Документооборот → Доп. настройки потоков работ → Максимальный уровень иерархии вверх, которому можно отправить документ». Если для каких-либо выбранных сотрудников отсутствует возможность отправки работы, то при открытии диалога с таким маршрутом необходимо удалять тэги с такими пользователями из соответствующих полей этапов маршрута.

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

Работы по процессу типов «Согласование», «Утверждение» и «Ознакомление» должны быть созданы согласно «Схеме отправки на согласование» (см. задачу 2.52.8393).

Блоки обоих типов настраиваются для какого-либо события по реестру («Активация», «Изменение» либо «Удаление») в Конфигураторе. Их можно:

Название блока обязательно к заполнению, и спользуется для наименования блока маршрута на клиентской стороне (см. иллюстрацию).

Действия при обновлении системы

При обновлении системы до версии, содержащей описанное в данной задаче изменение, должна быть проведена конвертация имеющихся маршрутов реестров следующим образом:

  1. «Предварительные этапы» → редактируемый блок с названием «Предварительные этапы»

  2. «Действия» → нередактируемый блок с названием «Действия»

  3. «Последующие этапы» → редактируемый блок с названием «Последующие этапы»

Содержимое блоков должно быть сохранено.

При этом, если в исходном блоке «Предварительные этапы» или «Последующие этапы» встречается один или несколько процессов типа «Блокирующий процесс», то этот блок должен быть разбит на несколько блоков следующим образом:

  • Каждый встречающийся в исходном блоке «Блокирующий процесс» помещается в отдельный нередактируемый блок с названием «Блокирующий процесс»

  • Оставшиеся от этого разбиения этапы исходного блока объединяются в редактируемые блоки с названиями «Предварительные этапы» или «Последующие этапы» (в зависимости от типа исходного блока)

  • Порядок новых редактируемых и нередактируемых блоков должен быть таким, чтобы сохранился порядок следования этапов исходного блока

Кроме вышеперечисленного, в отчёт по изменению базы данных (Административное приложение → Обслуживание системы → Управление БД) необходимо выводить следующие предупреждения:

  • Если в результирующих редактируемых блоках имеются этапы маршрута типа «Работа», «Согласование», «Утверждение», «Ознакомление», «Отправка документа», содержащие заполненное поле «Ответственный», необходимо выводить предупреждение (с красным цветом текста):

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

  • Для каждого найденного в «Предварительных» или «Последующих этапах» блокирующего процесса необходимо выводить предупреждение (с желтым цветом текста):

«В маршруте реестра название-реестра в блоке название-блока найден блокирующий процесс. Этот процесс был выделен в отдельный нередактируемый блок»

Рисунок 544. Редактирование блоков маршрута события реестра

Редактирование блоков маршрута события реестра