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

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

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

Метод 1. Программное прерывание создания задач в модуле объекта

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

Проанализируем ситуацию: в модуле объекта бизнес-процесса Согласование существуют предопределенные процедуры-обработчики точек маршрута. Чтобы заблокировать создание задачи ознакомления, выполним следующие действия:

  1. Найдем процедуру ОзнакомитьсяПередСозданиемЗадач.
  2. Добавим в самом начале оператор Возврат.
  3. Аналогично поступим с обработчиком завершения процесса, если ознакомление инициируется в нем.

Пример кода для внесения изменений:


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

Процедура ЗавершениеПриЗавершении(ТочкаМаршрутаБизнесПроцесса, Отказ)
    // Если задача ознакомления создается при завершении (для вложенных процессов),
    // также прерываем выполнение
    Возврат;
КонецПроцедуры

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

Метод 2. Автоматическое выполнение задачи через бизнес-события

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

Разберем по шагам, как настроить такой обработчик:

  1. Создадим новый обработчик бизнес-события для вида события Старт задачи.
  2. В коде обработчика пропишем проверку типа бизнес-процесса и условий, при которых задачу нужно завершить автоматически.

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


Задача = Событие.Источник;

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

КонецЕсли;

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

Метод 3. Настройка в шаблоне процесса (Low-code подход)

Прежде чем приступать к написанию кода, давайте посмотрим на штатные возможности 1С:Документооборот 2.1. Часто задачу ознакомления можно отключить простыми настройками в шаблоне бизнес-процесса Согласование.

Выясним, где это находится:

  1. Откройте нужный шаблон процесса Согласование.
  2. Перейдите на вкладку Результат.
  3. Найдите блок Отправлять на ознакомление при результате.
  4. Снимите флажки с пунктов Согласовано и Согласовано с замечаниями.

Если эти настройки заданы в шаблоне, который используется внутри комплексного процесса, задача ознакомления просто не будет инициирована логикой самого процесса. Это самый безопасный способ, не требующий внесения изменений в конфигурацию.

Метод 4. Особенности реализации в 1С:Документооборот 3.0

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

В «тройке» ознакомление с результатами настраивается непосредственно в карточке действия Согласование. В блоке Участники есть отдельная роль для ознакомления. Чтобы убрать автоматическую задачу, достаточно отредактировать состав участников в правилах обработки документов, удалив оттуда автоматическое добавление автора.

Если же требуется именно программное решение в 3.0, его следует внедрять через расширение в модуле РаботаСЗадачамиСобытия или аналогичных, анализируя тип выполняемого действия (Action).

Риски и рекомендации при автоматизации

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

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

← На главную