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