Почему задача в 1С:Документооборот зависает в статусе «Находится в очереди для выполнения» и как это исправить?

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

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

Причина 1: Блокировки файлов и карточек документов

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

  1. Проверим список активных пользователей. Даже если визуально пользователь закрыл программу, его сессия могла «зависнуть» на сервере, удерживая блокировку. Избежать этого поможет завершение сеанса пользователя за простой. В консоли администрирования серверов 1С следует найти и завершить такие «мертвые» сеансы или использовать обработку для удаления спящих сеансов на Кластере 1С.
  2. Проанализируем состояние файлов в документе. Если файл имеет статус «Занят для редактирования», регламентное задание может бесконечно ожидать его освобождения. Необходимо убедиться, что все файлы освобождены пользователями.
  3. В некоторых случаях блокировка может быть вызвана длительным удержанием транзакции на уровне СУБД (MS SQL или PostgreSQL). Если перезапуск службы сервера 1С не помогает, стоит обратить внимание на процессы внутри самой базы данных.

Причина 2: Блокировка регламентных заданий

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

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

Причина 3: Нехватка прав у пользователя фонового процесса

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

Рекомендуется временно назначить пользователю, под которым выполняются фоновые задания, полные права и проверить, исчезнут ли задачи из очереди. Если это помогло, следует детально проанализировать профили групп доступа.

Причина 4: Зависание бизнес-процесса в активном состоянии

Иногда происходит логический сбой: бизнес-процесс считается прерванным или завершенным, но в регистре сведений ЗадачиДляВыполнения запись о задаче остается в статусе «Активна». Рассмотрим по шагам, как исправить это вручную, если стандартные методы не помогают:

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

Пример кода для программной корректировки статуса (использовать только в крайних случаях через внешнюю обработку) — для этого подойдёт универсальный технический инструментарий разработчика и администратора 1С:


ОбъектЗадача = ЗадачаСсылка.ПолучитьОбъект();
ОбъектЗадача.СостояниеБизнесПроцесса = Перечисления.СостоянияБизнесПроцессов.Прерван;
ОбъектЗадача.Записать();

Причина 5: Зацикливание очереди и ошибки в коде

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

Для диагностики выполним следующие действия:

  1. Откроем Журнал регистрации — в этом поможет универсальная обработка администрирования и анализа журнала регистрации 1С.
  2. Установим фильтр по регламентному заданию ВыполнениеЗадач.
  3. Изучим сообщения об ошибках. Там может содержаться информация о нехватке памяти, ошибках в коде или конфликтах блокировок.
  4. Временно отключим опцию «Использовать фоновое выполнение задач» в настройках программы (Раздел «Настройка программы» — «Общие настройки»). После этого попробуйте выполнить задачу снова. Теперь ошибка выскочит непосредственно в сеансе пользователя, и вы сможете увидеть её полный текст.

Метод «Перезагрузки» процесса

Рассмотрим практический совет, который часто помогает пользователям без глубокого погружения в конфигуратор: если задача зависла только у одного сотрудника, попробуйте остановить и заново запустить бизнес-процесс. Для этого:

  1. Перейдите в дерево процессов документа.
  2. Найдите текущее согласование.
  3. Нажмите «Остановить», а затем «Продолжить» или «Стартовать заново».

Это действие обновляет записи в регистрах очередей и может «протолкнуть» зависшую операцию.

Важный нюанс: если вы используете старую версию (например, 2.0.18.1), помните, что в ней механизмы очереди были менее стабильны, чем в современных релизах 2.1 или 3.0. Постоянные зависания — серьезный повод задуматься об обновлении конфигурации до актуальной версии.

← На главную