Как настроить автоматический переход этапов в комплексном процессе 1С:Документооборот при отрицательном результате согласования?

Программист 1С v8.3 (Управляемые формы) 1С:Документооборот IT и автоматизация бизнеса
← На главную

При работе с комплексными процессами в 1С:Документооборот (особенно в версии 2.1) многие администраторы и разработчики сталкиваются с особенностью: если кто-то из согласующих лиц ставит визу "Не согласовано", процесс не идет дальше по маршруту, а возвращается автору. Автор должен вручную ознакомиться с результатом и либо завершить согласование, либо отправить документ на повторный цикл. В этой статье мы разберем, как автоматизировать этот процесс, чтобы при получении отрицательной визы задача сразу уходила следующему исполнителю (например, ИРР), минуя ручное подтверждение автором.

Анализ стандартной логики системы

Прежде чем приступать к доработкам, давайте разберем, почему система ведет себя именно так. В коробочной версии «1С:Документооборот 2.1» заложена жесткая логика: отрицательная виза считается критическим событием. Программа «считает», что автор должен обязательно узнать о причинах отказа и принять управленческое решение. Поэтому, даже если в комплексном процессе настроены следующие этапы, они не активируются до тех пор, пока задача Ознакомиться с результатами согласования не будет выполнена автором процесса.

Рассмотрим ситуацию, когда автор нажимает кнопку "Завершить согласование". Только в этот момент этап «Согласование» считается официально оконченным, и система обращается к таблице этапов комплексного процесса, чтобы определить, куда двигаться дальше. Если мы хотим убрать это звено, нам придется либо изменить настройки маршрутизации, либо применить программные методы.

Решение 1. Настройка смешанного порядка выполнения и условий

Этот способ позволяет максимально использовать типовой функционал 1С:ДО КОРП. Проанализируем возможности настройки шаблона комплексного процесса в виде таблицы. Пошагово выполним следующие действия:

  1. Перейдем в настройки шаблона комплексного процесса.
  2. Установим смешанный порядок выполнения этапов. Это позволит нам более гибко управлять последовательностью.
  3. Для последующих этапов (например, «Рассмотрение» или «Утверждение») необходимо прописать условия выполнения.
  4. В условии укажем проверку результата предыдущего этапа. Если результат равен «Не согласовано», то активируется ветка для Исполнителя регламентных работ (ИРР).

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

Решение 2. Программное автозавершение задачи ознакомления

Для того чтобы исключить рутинную работу автора, мы можем использовать Дополнительные обработчики бизнес-событий. Нам нужно перехватить момент создания задачи ознакомления и программно ее выполнить. Разберем пример кода, который можно внедрить через справочник ДополнительныеОбработчики (подписка на событие Создание задачи).

Проанализируем пример логики обработчика:


Задача = Событие.Источник; 
// Проверяем, что задача относится к процессу согласования
Если ТипЗнч(Задача.БизнесПроцесс) = Тип("БизнесПроцессСсылка.Согласование") Тогда 
    // Нас интересует только точка маршрута "Ознакомиться"
    Если Задача.ТочкаМаршрута = БизнесПроцессы.Согласование.ТочкиМаршрута.Ознакомиться Тогда 
        
        // Важно: здесь стоит добавить проверку на конкретный шаблон комплексного процесса,
        // чтобы не завершать задачи ознакомления во всей базе бесконтрольно.
        
        ЗадачаОбъект = Задача.ПолучитьОбъект();
        // Программно выполняем задачу, имитируя нажатие кнопки автором
        ЗадачаОбъект.ВыполнитьЗадачу();
    КонецЕсли; 
КонецЕсли;

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

Решение 3. Использование механизмов эскалации задач

Если вы не хотите вносить изменения в код, можно воспользоваться механизмом эскалации. В 1С:ДО можно настроить правила, по которым задачи будут выполняться автоматически по истечении определенного времени.

Разберем, как это настроить для нашей ситуации:

  1. Создадим правило эскалации для задач типа Ознакомиться с результатами согласования.
  2. В условии правила укажем, что оно действует для конкретного шаблона процесса.
  3. Установим минимальный срок (например, 1 час или даже 10 минут).
  4. В качестве действия выберем "Выполнить автоматически".

Это «мягкое» решение: автор все же увидит задачу на короткое время, но если он ничего не предпримет, система сама протолкнет процесс дальше. Это гарантирует, что бизнес-процесс не «зависнет» на этапе ознакомления.

Особенности перехода на 1С:Документооборот 3.0

Выясним, как эта проблема решается в новой редакции 3.0. В отличие от версии 2.1, где комплексный процесс был «жесткой» надстройкой, в версии 3.0 используется механизм схем обработки.

В схеме обработки документа мы можем нарисовать маршрут графически. В этом случае:

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

Резюме и рекомендации

Проанализировав все способы, подведем итоги. В версии 2.1 наиболее надежным и «чистым» способом автоматизации является комбинация настройки условий в таблице комплексного процесса и программного обработчика на создание задачи ознакомления. Это позволяет исключить человеческий фактор и ускорить движение документа по организации.

При внедрении программного кода всегда делайте проверки на ТипЗнч бизнес-процесса и конкретный Шаблон, чтобы ваши доработки не затронули другие бизнес-процессы предприятия, где участие автора при отказе может быть критически важным.

← На главную