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

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

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

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

Понимание архитектуры процессов в ДО 3.0

Для начала давайте разберемся с базовыми понятиями, которые изменились. Если в старых версиях мы оперировали «Шаблонами процессов», то в ДО 3.0 центральное место занимает механизм Обработки документов. Это единый инструмент, который управляет жизненным циклом документа.

Маршрут движения настраивается в справочнике Настройки обработки. Внутри него создается Схема обработки — визуальный конструктор, где этапы соединяются стрелками. Именно здесь закладывается логика ветвления.

Момент вычисления исполнителей: статика против динамики

Один из главных вопросов: «Срабатывают ли алгоритмы только при старте обработки?». Ответ: и да, и нет, в зависимости от того, как мы настроили исполнителей.

  1. Статические исполнители (Явное указание): Если в этапе вы указали конкретного пользователя (например, «Иванов И.И.») или Роль («Главный бухгалтер»), то система зафиксирует их в момент старта обработки документа.
  2. Динамические исполнители (Автоподстановки): Это то, что нам нужно для изменения маршрута «по ходу движения». В ДО 3.0 активно используются Скрипты автоподстановки — для этой задачи разработан модуль добавления дополнительных участников через автоподстановки.

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

Рассмотрим пример. У нас есть последовательность:

  1. Согласование у Руководителя.
  2. Согласование у Снабжения.

Если для второго этапа настроена автоподстановка, то система запустит алгоритм вычисления исполнителя только после того, как Руководитель (этап 1) нажмет кнопку «Согласовано». Это позволяет скрипту проанализировать результат первого этапа и принять решение.

Решение задачи: ветвление по условию

Разберем практическую задачу: «Если есть виза Иванова, тогда не отправлять в Отдел Снабжения, иначе — отправлять».

В ДО 3.0 для этого не нужно писать сложный код внутри задач или перехватывать события. Мы будем использовать элемент Условие в графической схеме обработки.

Порядок действий:

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

В скрипте условия нам доступен контекст обработки. Мы можем проверить наличие визы (согласования) конкретного пользователя. Пример логики скрипта:


// Получаем предмет (документ) из контекста обработки
ДокументОбъект = Предмет.Ссылка;

// Проверяем наличие визы в табличной части или регистре сведений, 
// отвечающем за визы согласования (в зависимости от реализации хранения виз в вашей версии)
ЕстьВизаИванова = Ложь;

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

Результат = ЕстьВизаИванова;

Если Результат равен Истина, стрелка маршрута пойдет в обход этапа снабжения. Если Ложь — маршрут пойдет на этап согласования со снабжением.

Когда проверяются условия выполнения задач?

Еще один важный вопрос касался условий проверки внутри самой задачи (например, обязательность заполнения комментария). Такие алгоритмы и условия проверки при записи срабатывают в момент, когда пользователь нажимает кнопку выполнения задачи (например, «Согласовано» или «Исполнено»).

Если вам нужно отладить этот момент:

  1. Запустите конфигуратор в режиме отладки.
  2. Убедитесь, что включена отладка фоновых заданий (так как процессы часто выполняются в фоне) — процесс упростит расширение для пошаговой отладки кода в режиме 1С:Предприятие.
  3. Поставьте точку останова в модуле объекта бизнес-процесса (например, БизнесПроцесс.Исполнение) в процедуре ПередВыполнением или в соответствующем обработчике команды формы задачи.

Динамическое изменение участников вручную

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

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

Резюме по реализации

Для реализации гибкой маршрутизации в 1С:Документооборот 3.0 используйте комбинацию следующих инструментов:

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

← На главную