При внедрении и эксплуатации «1С:Документооборот 2.1» (включая версии КОРП и локализованные версии, такие как версия для Беларуси) пользователи часто сталкиваются с ситуацией, когда сложный маршрут, настроенный через шаблон комплексного процесса, «замирает» на определенном этапе. Типичный сценарий: документ успешно прошел стадию согласования, но вместо того чтобы отправиться на утверждение, процесс завершается или переходит в состояние ознакомления автора с результатом. Также нередки случаи «двоения» задач, когда участники получают идентичные уведомления и задания. В данной статье мы подробно разберем, как диагностировать и устранять эти проблемы.
В «1С:Документооборот» версии 2.1 механизмы продвижения по этапам комплексного процесса работают асинхронно. Это означает, что после выполнения задачи одним пользователем система не сразу создает задачу следующему. Рассмотрим, как это устроено. За переходы отвечает специальный регистр сведений, который служит буфером для системы.
Если процесс «завис», первым делом проанализируем регистр сведений ОчередьМаршрутизацииКомплексныхПроцессов. Для этого перейдем в «Функции для технического специалиста» (или через «Все функции», если версия платформы старше) и найдем данный регистр. Если процесс стоит в очереди и не может продвинуться, в колонке «Текст ошибки» будет содержаться техническое описание проблемы. Часто там можно встретить сообщения о блокировках объектов или ошибках в правах доступа исполнителя следующего этапа. Для своевременного обнаружения таких проблем можно использовать отчет по зависшим процессам в Документообороте.
Выясним причину остановки: если запись в регистре есть, но она не обрабатывается, проверим работу регламентных заданий. За движение процессов отвечает задание ФоноваяМаршрутизацияКомплексныхПроцессов. Разберем шаги для проверки:
Проанализируем ситуацию, когда технически очередь пуста, но переход на этап «Утверждение» всё равно не происходит. Проблема может крыться в бизнес-логике самого вида документа. В 1С:Документооборот возможность утверждения или подписания жестко привязана к настройкам конкретного вида документа.
Рассмотрим порядок действий для проверки:
Если в шаблоне комплексного процесса есть действие «Утверждение», но в самом виде документа этот функционал отключен, система может войти в логический тупик. Хотя в последних релизах конфигурация старается блокировать такие несоответствия еще на этапе настройки шаблона, при обновлении системы или импорте настроек могут возникнуть коллизии. Убедимся, что галочка ИспользоватьПодписаниеДолжностнымЛицом установлена, если мы ожидаем создания задачи подписанту.
Еще одна распространенная причина остановки процесса — настройки самого действия «Согласование» внутри комплексного процесса. Разберем по шагам, на что обратить внимание в шаблоне:
В настройках действия «Согласование» существует флаг Прерывать при отрицательном результате. Если хотя бы один из согласующих выбрал вариант «Не согласовано», процесс не пойдет на утверждение. Вместо этого он вернется к автору для ознакомления с результатами. Проанализируем результат выполнения задач согласования: если есть хоть один отрицательный итог, то остановка процесса является штатным поведением системы, а не ошибкой.
Также проверим Условия перехода. В комплексных процессах можно настраивать условия, при которых выполняется то или иное действие. Если между этапом «Согласование» и «Утверждение» стоит условие (например, «Сумма документа > 100 000»), а текущий документ не соответствует этому критерию, процесс завершится сразу после согласования. Проверим правильность настройки скриптов или выражений в конструкторе условий. Для этой задачи подойдёт расширение для проверки условий маршрутизации.
Перейдем к вопросу «двоения» задач, когда участникам приходят две одинаковые задачи одновременно. Рассмотрим основные причины этого явления.
1. Наложение автозапуска и ручного старта. Это самая частая причина. В 1С:Документооборот можно настроить автоматический старт процесса при создании или регистрации документа. Если пользователь, не дожидаясь срабатывания системы, запускает процесс вручную по тому же шаблону, возникают два параллельных экземпляра процесса. Выясним, настроен ли автостарт: раздел «Управление процессами» — «Настройка автозапуска процессов».
2. Дублирование действий в схеме. Посмотрим на структуру комплексного процесса. Иногда при копировании этапов или неаккуратном редактировании в список действий добавляются две одинаковые строки «Согласование» с одним и тем же списком исполнителей. В этом случае система честно создаст две задачи каждому сотруднику.
3. Ошибки в подписках на события (кастомизация). Если в вашу базу вносились программные изменения, велика вероятность, что при записи задачи или бизнес-процесса срабатывает некорректно написанный код. Разберем пример программного кода, который может вызвать дублирование:
Процедура ПередЗаписью(Отказ)
// Ошибочный код, который инициирует старт процесса повторно
Если ЭтоНовый() Тогда
БизнесПроцессы.КомплексныйПроцесс.СоздатьБизнесПроцесс();
// ... старт процесса без проверки на уже запущенные экземпляры
КонецЕсли;
КонецПроцедуры
Для исправления подобных ситуаций необходимо внедрять проверку на наличие уже активных процессов по данному предмету (документу). Проанализируем наличие расширений или доработок в конфигураторе, связанных с объектом БизнесПроцессСсылка.КомплексныйПроцесс.
Если вышеуказанные способы не помогли, воспользуемся инструментами глубокой диагностики. Рассмотрим использование Карты маршрута. В карточке запущенного процесса перейдем на вкладку «Схема». На ней визуально отображается текущее состояние процесса. Если мы видим, что точка маршрута замерла на соединительной линии или на узле завершения согласования, это подтверждает проблему в фоновой маршрутизации.
Разберем еще один важный аспект — Состояния документов. В 1С:Документооборот 2.1 существует механизм «Настройка доступности по состояниям». Проверим, не запрещен ли переход документа в состояние «На утверждении» или «Утвержден», когда он находится в состоянии «Согласован». Если в матрице состояний стоит запрет, бизнес-процесс может выдать ошибку при попытке изменить статус документа и остановиться.
Для администраторов будет полезно проанализировать выполнение кода в момент завершения задачи согласования. В модуле менеджера комплексного процесса КомплексныйПроцессСервер можно найти функции, отвечающие за переход к следующему этапу. Использование отладки позволит точно определить, на каком этапе условие Результат = Истина меняется на Ложь, прерывая цепочку действий.
Подводя итог, отметим: стабильность комплексного процесса в 1С:Документооборот зависит от трех факторов: корректности регламентных заданий, соответствия настроек вида документа логике шаблона и отсутствия конфликтов между автоматическим и ручным запуском. Тщательный анализ регистра очереди и журнала регистрации позволяет решить 90% возникающих проблем.