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