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

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

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

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

Проблема статического расчета условий

Разберем, почему стандартный подход с добавлением этапов внутрь одного действия Согласование часто не работает. В редакции 3.0, если вы настраиваете «Правила обработки» и просто перечисляете этапы (отделы) внутри одного действия, система по умолчанию пытается определить весь список исполнителей и рассчитать все условия в момент активации этого действия.

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

Решение 1: Использование графической схемы процесса

Для того чтобы условия пересчитывались динамически непосредственно перед началом каждого шага, проанализируем возможности графического редактора схем в настройках обработки документа. В версии 3.0 «Комплексный процесс» переродился в «Настройки обработки», где доступен конструктор схем.

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

Такой подход гарантирует, что проверка «Нужно ли согласование руководства?» произойдет только после того, как обычные сотрудники отдела завершат свою задачу.

Решение 2: Программная проверка виз в условиях

Как именно проверить, согласовал ли уже начальник документ на предыдущем этапе? Стандартного конструктора условий может быть недостаточно. Рассмотрим пример использования программного кода на языке 1С для реализации этой логики. Нам потребуется обратиться к регистру сведений ВизыСогласования.

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


// Скрипт для проверки наличия визы от руководства
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |	ВизыСогласования.РезультатСогласования КАК Результат
    |ИЗ
    |	РегистрСведений.ВизыСогласования КАК ВизыСогласования
    |ГДЕ
    |	ВизыСогласования.Документ = &Предмет
    |	И ВизыСогласования.Исполнитель В (&СписокРуководителей)
    |	И ВизыСогласования.РезультатСогласования = ЗНАЧЕНИЕ(Перечисление.РезультатыСогласования.Согласовано)";

Запрос.УстановитьПараметр("Предмет", Объект.Ссылка);
// Укажите список ссылок на пользователей или роли (Начальник, Зам)
Запрос.УстановитьПараметр("СписокРуководителей", СписокРуководителей); 

РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
    // Если виза найдена, возвращаем Ложь, чтобы пропустить этап
    Результат = Ложь; 
Иначе
    // Если визы нет, возвращаем Истина — этап согласования руководством нужен
    Результат = Истина;
КонецЕсли;

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

Настройка итераций и циклов согласования

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

Для обеспечения наглядности, о которой беспокоился автор, необходимо в настройках процесса включить опцию «История согласования». Это позволит видеть не только итоговые визы, но и все промежуточные итерации, комментарии и причины возвратов на каждом «этаже» согласования.

Эргономика и автоподстановки

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

Проанализируем настройку Разворачивать до конкретных сотрудников. В режиме «Перед началом выполнения действия» система определит исполнителя в последний момент. Это критично, если за время согласования на первом этапе в отделе сменился руководитель или изменился состав роли. Совместное использование этой настройки с динамической схемой дает максимально гибкий и отказоустойчивый процесс.

Рекомендации по внедрению

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

← На главную