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

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

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

Способ 1. Использование состояний документа (Стандартный метод)

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

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

  1. Перейдем в настройки автоматического запуска процессов (раздел «Управление процессами»).
  2. Создадим новую настройку для шаблона процесса Регистрация.
  3. В качестве условия выберем событие «Изменение состояния документа».
  4. Добавим условие: Состояние Равно Согласован.

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

Способ 2. Настройка комплексного процесса с ограничением прав

Многие пользователи опасаются использовать Комплексный процесс, так как считают, что он дает либо слишком много свободы, либо слишком мало. Однако в версии КОРП (и некоторых редакциях ПРОФ) существует механизм блокировки изменений на определенных этапах.

Выясним, как реализовать настройку сложных маршрутов в 1С:Документооборот 2.1 КОРП внутри комплексного процесса:

  1. Создадим шаблон комплексного процесса, состоящий из двух этапов: Согласование и Регистрация.
  2. Для первого этапа оставим настройки открытыми, чтобы инициатор мог выбирать согласующих лиц вручную при запуске (поможет автоматизация подбора участников для бизнес-процессов).
  3. Для второго этапа (Регистрация) воспользуемся колонкой с пиктограммой «Замочек» в таблице этапов. Установка этого флага запрещает пользователю менять состав исполнителей и сроки, заданные в шаблоне — есть управление составом рабочих групп и участников документов в 1С:ДО.
  4. Если необходимо более тонкое разграничение, воспользуемся «Настройкой доступности полей по состоянию» (удобно через настройка контроля ввода данных и выполнение обработчиков событий). Для контроля корректности прав полезно провести анализ настроек доступности по состоянию с помощью специализированных инструментов. Осуществляя практическое применение комплексных процессов в 1С:Документооборот 2.1, можно настроить автоматическое заполнение вспомогательных процессов по связям, указав, что при создании процесса поля, относящиеся ко второму этапу, доступны только для чтения.

Способ 3. Бизнес-события: Детекторы и Обработчики

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

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


Если ТипЗнч(Источник) = Тип("БизнесПроцессОбъект.Согласование") Тогда
    Если Источник.Завершен И Источник.РезультатАккорда = Перечисления.РезультатыСогласования.Согласовано Тогда
        // Здесь вызывается процедура запуска следующего процесса
        ЗапуститьПроцессРегистрации(Источник.Предмет);
    КонецЕсли;
КонецЕсли;

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

Способ 4. Скрипты в шаблонах процессов (для версии КОРП)

Если ваша конфигурация позволяет использовать скрипты внутри схем процессов, это открывает дополнительные возможности. Разберем этот вариант подробнее. В схеме процесса (особенно комплексного) можно добавить действие типа «Скрипт» сразу после этапа согласования. Подобная гибкость доступна и в интерфейсе: например, можно внедрить настраиваемые действия при изменении дополнительного реквизита в открытой форме — для этого подойдёт контроль ввода данных и условий проведения документов.

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


НовыйПроцесс = БизнесПроцессы.Регистрация.СоздатьБизнесПроцесс();
НовыйПроцесс.Дата = ТекущаяДата();
НовыйПроцесс.Автор = Параметры.Автор;
НовыйПроцесс.Предметы[0].Предмет = Параметры.Предмет;
НовыйПроцесс.Записать();
НовыйПроцесс.Старт();

Такой подход позволяет передать в следующий процесс любые данные из предыдущего, которые были накоплены в ходе согласования (например, комментарии или особые отметки согласующих лиц).

Почему стандартные правила автозапуска могут казаться нелогичными?

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

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

← На главную