Как возобновить или перезапустить ошибочно завершенный процесс в 1С:Документооборот?

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

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

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

1. Профилактика: Отмена выполнения задачи до закрытия процесса

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

Исполнитель, его руководитель или делегированное лицо могут вернуть задачу в статус «Не выполнена» при соблюдении следующих условий:

  1. Бизнес-процесс относится к категории параллельных или смешанных (например, «Исполнение» несколькими лицами или «Согласование»).
  2. Процесс еще не перешел на следующий шаг маршрута. Если другие участники уже выполнили свои задачи или начался этап проверки результатов автором, отмена станет невозможной.
  3. В карточке задачи активна кнопка «Отменить выполнение». При ее нажатии задача возвращается в список активных задач пользователя, а ее статус сбрасывается.

Этот способ является наиболее безопасным, так как он заложен в стандартную логику конфигурации и не нарушает целостность данных.

2. Что делать, если процесс полностью завершен? (Штатный подход)

Если автор процесса уже нажал кнопку «Завершить» или «Закрыть», то с точки зрения системы жизненный цикл данного бизнес-процесса официально окончен. Простой кнопки «Возобновить» в пользовательском интерфейсе для полностью закрытых процессов не предусмотрено.

Рассмотрим стандартный и наиболее безопасный алгоритм действий в этом случае:

  1. Запуск нового процесса: На основании текущего документа необходимо запустить новый процесс исполнения или согласования. При этом в тексте описания нового процесса рекомендуется сделать пометку о том, что он запускается взамен ошибочно закрытого.
  2. Сохранение истории: Плюс этого подхода в том, что вся история согласования, включая ошибочно принятые решения, сохраняется в системе. Это позволяет наглядно проследить хронологию событий при последующем аудите документа.

3. Корректировка данных администратором: Метод «Группового изменения реквизитов» и его опасности

Иногда администраторы баз данных пытаются «реанимировать» закрытый процесс путем прямого изменения реквизитов объектов в базе данных через стандартную обработку ГрупповоеИзменениеРеквизитов.

Давайте проанализируем, как устроен этот механизм изнутри, и почему его использование крайне нежелательно в рабочей базе данных. Для того чтобы процесс снова стал активным, администраторы меняют реквизит Завершен в значение Ложь у бизнес-процесса, а также реквизит Выполнена в значение Ложь у соответствующих задач.

Программная реализация такого изменения выглядит следующим образом:


// Пример опасного ручного изменения состояния задачи и бизнес-процесса
НачатьТранзакцию();
Попытка
    ЗадачаОбъект = СсылкаНаЗадачу.ПолучитьОбъект();
    ЗадачаОбъект.Выполнена = Ложь;
    ЗадачаОбъект.СостояниеБизнесПроцесса = ПредопределенноеЗначение("Перечисление.СостоянияБизнесПроцессов.Активен");
    ЗадачаОбъект.Записать();
    
    БПОбъект = СсылкаНаБизнесПроцесс.ПолучитьОбъект();
    БПОбъект.Завершен = Ложь;
    БПОбъект.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияБизнесПроцессов.Активен");
    БПОбъект.Записать();
    
    ЗафиксироватьТранзакцию();
Исключение
    ОтменятьТранзакцию();
    ЗаписатьЛогОшибки(ОписаниеОшибки());
КонецПопытки;

Внимание! Категорически не рекомендуется выполнять подобные операции на работающей базе.

Выясним причины, почему этот метод опасен:

  1. Нарушение ссылочной целостности: В «1С:Документооборот» логика выполнения бизнес-процессов завязана не только на реквизиты объектов БизнесПроцессСсылка и ЗадачаСсылка. Данные о состояниях процессов пишутся во множество связанных регистров сведений (например, история выполнения задач, регистры состояний документов, задачи исполнителей). Прямая перезапись реквизитов «в лоб» не обновляет эти регистры.
  2. Зависание задач: Задачи могут пропасть из списков «Мне» у пользователей или, напротив, бесконечно там оставаться без возможности их интерактивного выполнения.
  3. Искажение отчетов: Отчеты по исполнительской дисциплине и метрикам времени начнут выдавать некорректную информацию, так как даты завершения задач в регистрах и самих объектах будут рассинхронизированы.

4. Особенности работы в «1С:Документооборот 3.0»

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

Однако концептуальная проблема с ошибочным закрытием осталась прежней: штатной кнопки отката полностью завершенной обработки не существует. Тем не менее, в редакции 3.0 решить проблему можно более изящно через изменение состояний:

  1. Администратор или ответственный за документ пользователь может вручную перевести состояние документа обратно в статус Проект.
  2. После возврата в исходное состояние обработку документа можно запустить повторно с первого шага.
  3. История прохождения предыдущих этапов при этом не затирается, а сохраняется в карточке документа на вкладке «Обработка».

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

5. Разница с другими конфигурациями (например, 1С:CRM)

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

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

← На главную