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