Почему в 1С:Документооборот не появляются задачи после старта бизнес-процесса?

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

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

Асинхронная модель запуска: Очередь старта процессов

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

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

Регламентные задания — «двигатель» документооборота

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

Для решения проблемы выполним следующие шаги:

  1. Проверим состояние регламентных заданий в базе.
  2. Найдем в списке задание с наименованием Старт процессов.
  3. Если запуск всех заданий нежелателен, запустим именно это задание вручную один раз или включим его по расписанию.

Как только задание отработает, оно прочитает записи из очереди, инициализирует бизнес-процесс и создаст соответствующие записи в таблицах задач. Только после этого консоль запросов покажет данные в Задача.ЗадачаИсполнителя.

Специфика прав доступа и дескрипторы

Иногда возникает ситуация: задачи физически созданы в базе (запрос их видит), но пользователь под своими правами их не находит. Выясним причину этого поведения. В 1С:ДО используется уникальная система дескрипторов доступа. В отличие от типовых конфигураций (ERP, ЗУП), где RLS работает по простым измерениям (Организация, Склад), в Документообороте права рассчитываются динамически для каждого объекта.

За расчет прав отвечает фоновое задание Обновление прав доступа. Пока оно не рассчитает, кто является автором, исполнителем или участником рабочей группы, задача может оставаться невидимой. Это важный нюанс: задачи в 1С:ДО неразрывно связаны с правами доступа, которые обновляются асинхронно. Для исправления проблем с правами доступа пригодится обработка для восстановления прав доступа.

Особенности программного кода и транзакционная модель

Рассмотрим техническую сторону вопроса, упомянутую опытными разработчиками. В 1С:Документооборот цепочка событий при записи задачи крайне специфична. Посмотрим на логику выполнения задачи:

При нажатии кнопки «Выполнено» в одной транзакции происходит:

Важный совет: Если вы планируете писать собственные обработчики (подписки на события) для задач, делайте их максимально «легкими». Ошибка в коде подписки или блокировка таблицы в этот момент приведет к откату всей транзакции, и задача останется невыполненной, а процесс — «зависшим».

Отличия от ERP, УТ и ЗУП

Сравним идеологию работы с задачами в разных системах. В типовых решениях (УТ, ERP) задачи часто носят вспомогательный характер. В 1С:Документооборот это центральный объект управления. Основные отличия:

Практический пример ручного запуска процесса

Если вам необходимо программно инициировать старт процесса, минуя очередь (например, в целях отладки), можно воспользоваться методами объектов бизнес-процессов. Однако в типовом функционале рекомендуется использовать штатный механизм старта. Разберем пример логики, которая происходит «под капотом» при обработке очереди:


// Пример упрощенной логики старта бизнес-процесса
БизнесПроцессОбъект = Справочники.ВнутренниеДокументы.СоздатьПроцесс(ВыбранныйДокумент);
БизнесПроцессОбъект.Дата = ТекущаяДата();
БизнесПроцессОбъект.Записать();

// Вместо немедленного старта, ДО помещает его в очередь
// Для немедленного старта (не рекомендуется для массовых операций):
БизнесПроцессОбъект.Стартовать();

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

← На главную