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