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