При автоматизации документооборота в организациях часто возникает классический сценарий: внутренний документ должен пройти цепочку внутренних согласований, а затем отправиться на утверждение во внешнее ведомство или государственный орган. Поскольку внешние структуры не работают в вашей локальной базе 1С:Документооборот, возникает логический разрыв процесса. Нам необходимо зафиксировать факт утверждения или отклонения документа государственным органом внутри системы, чтобы направить документ дальше по маршруту или вернуть его автору на доработку.
Главная сложность, с которой сталкиваются администраторы и бизнес-аналитики, заключается в блокировке реквизитов. Как только внутренний документ получает статус «Согласован», система штатно запрещает рядовым пользователям изменять его поля. Как же тогда внести отметку об утверждении внешним органом без предоставления административных прав обычным сотрудникам? Разберем подробно несколько эффективных способов решения этой задачи средствами платформы 1С:Предприятие 8.3.
Это самый простой и логичный способ, заложенный в типовой функционал программы. Нам не нужно прибегать к программированию или выдавать пользователям избыточные права администратора системы. Мы настроим точечное исключение для конкретного реквизита документа.
Проанализируем этот механизм по шагам:
В результате, когда документ перейдет в состояние «Согласован», все его основные реквизиты и прикрепленные файлы останутся защищенными от изменений, но ответственный сотрудник сможет без труда заполнить поле с решением госоргана, не нарушая прав доступа.
Если мы принципиально не хотим разрешать редактирование карточки документа после его согласования, мы можем перенести фиксацию решения на уровень бизнес-процесса. В 1С:Документооборот мы можем добавлять дополнительные реквизиты не только к документам, но и к самим задачам.
Рассмотрим, как настроить данный вариант:
Этот способ элегантен тем, что карточка самого документа гарантированно остается неизменной, а вся история согласования фиксируется непосредственно в бизнес-процессе.
Что делать, если в процессе настроена отправка задачи утверждения на конкретную роль или пользователя («Представитель госоргана»), но физически кнопку «Утвердить» должен нажимать секретарь организации после получения бумажного письма?
Для реализации этого сценария воспользуемся механизмом делегирования прав. Нам не нужно давать секретарю полные права на систему или роль Контроль задач и бизнес-процессов (которая позволяет выполнять любые задачи за любых пользователей).
Выполним следующие настройки:
При такой настройке секретарь в своем списке задач увидит чужую задачу «Утвердить за: Чиновник госоргана» и сможет выполнить ее от своего имени. В системе останется корректный след: задача выполнена секретарем за представителя ведомства.
Для того чтобы документ автоматически возвращался на доработку при отрицательном решении госоргана, нам необходимо правильно настроить условия перехода в комплексном процессе. Посмотрим на пример кода, который можно использовать в условиях маршрутизации для проверки значения дополнительного реквизита:
// Проверим решение госоргана, зафиксированное в дополнительном реквизите документа
СвойствоРешение = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Решение госоргана");
Если ЗначениеЗаполнено(СвойствоРешение) Тогда
РешениеЗначение = УправлениеСвойствами.ЗначениеСвойства(Ссылка, СвойствоРешение);
Если РешениеЗначение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Утверждено") Тогда
Результат = Истина; // Маршрут идет по ветке успешного выполнения
Иначе
Результат = Ложь; // Документ направляется на ветку доработки
КонецЕсли;
КонецЕсли;
Используя этот несложный алгоритм в условиях переходов схемы комплексного процесса, мы полностью автоматизируем циклическую отправку документа на доработку и повторное согласование до тех пор, пока от госоргана не будет получен положительный вердикт.