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