Зависший процесс или задача в 1С:ДО: как остановить и убрать

· 9 мин

Содержание

Удалить процесс в 1С:Документооборот напрямую нельзя, пока он запущен: сначала его нужно остановить или прервать, затем пометить на удаление и выполнить «Удаление помеченных объектов». Если процесс «завис» и не реагирует, причина обычно в застрявшем фоновом задании, незавершённом сеансе или блокировке на уровне СУБД, и лечится это в другом порядке.

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

Всё, что связано с удалением процессов, задач и сеансов, делайте только после резервной копии базы. Удалённый процесс вместе с его задачами восстановить нельзя.

Сначала разберитесь, что именно зависло

Слово «завис» в документообороте означает три разных ситуации. Лечат их по-разному, поэтому потратьте пять минут на диагностику.

Три типичных симптома

  • 🔄 Процесс «в работе», но задач у исполнителей нет. Маршрут не двинулся дальше: фоновое задание, которое должно создать следующую задачу, не отработало или упало.
  • ⏳ Задача висит у исполнителя, а он её выполнить не может. Кнопка «Выполнено» не нажимается, форма выдаёт ошибку или ждёт ответа сервера.
  • 🔒 Всё замирает на несколько минут и потом идёт дальше. Это почти всегда блокировки, а не сломанный процесс.

Что проверить в первую очередь

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

💡 Если в журнале одна и та же ошибка повторяется каждые несколько минут, это зацикленное регламентное задание. Удалять процесс бессмысленно: следующий запуск задания создаст проблему заново.

Остановка процесса и удаление через интерфейс

Это штатный путь, и в большинстве случаев его хватает. Пробуйте его до любых вмешательств в сеансы и СУБД.

Остановить, прервать, пометить

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

После удаления процесса исчезают и его задачи: они подчинены процессу.

Когда штатное удаление не срабатывает

Типичная причина отказа — объект, на который ссылаются другие данные. Платформа покажет список таких ссылок. В документообороте это чаще всего:

  • вложенные подпроцессы, созданные от родителя;
  • документ, у которого процесс прописан в связанных объектах;
  • записи в регистрах хода выполнения.

Сначала разберитесь с подпроцессами, потом с родителем. Не пытайтесь «снять ссылки» через конфигуратор, пока не использованы все штатные способы.

Если процесс запущен по типовому маршруту и затрагивает согласование договора или приказа, до удаления согласуйте это с ответственным за документ. Из журнала согласований пропадёт след, что документ проходил проверку.

Сеансы пользователей: кто держит процесс

Иногда процесс не удаляется, потому что с ним работает чей-то сеанс. Форма карточки открыта, задача в работе, клиент завис, а сервер считает пользователя активным.

Где смотреть активные сеансы

  • В самой базе: меню «Администрирование», пункт со списком активных пользователей (в конфигураторе — «Администрирование → Активные пользователи»).
  • В консоли кластера серверов 1С: узел «Сеансы» у нужной информационной базы показывает также спящие сеансы и их соединения.

Смотрите на колонки «Начало сеанса», «Последняя активность» и «Приложение». Сеанс фонового задания (приложение «Фоновое задание») нельзя путать с обычным пользовательским: его удаление прервёт задание на середине.

Что делать

  1. Попросите пользователя закрыть карточку и сам клиент. Это самое безопасное.
  2. Если не помогло, завершите его сеанс в списке активных пользователей или в консоли кластера.
  3. Повторите остановку и удаление процесса.

Не завершайте сеанс, в котором сейчас идёт проведение или загрузка данных. Прерванная транзакция откатится, но человек потеряет введённое.

Очередь регламентных и фоновых заданий

Процессы в документообороте двигают регламентные задания: они проверяют сроки, рассылают уведомления, запускают следующие шаги. Если задание «залипло», маршрут стоит, а задачи не создаются.

Как найти задание

В администраторском разделе откройте «Регламентные и фоновые задания» (в зависимости от релиза — в блоке «Поддержка и обслуживание» либо в настройках программы). В списке:

  • отберите задания по состоянию «Выполняется» или «Ошибка»;
  • посмотрите время начала: задание, которое «выполняется» уже несколько часов, точно застряло;
  • откройте подробности: там сообщение об ошибке и сеанс, в котором задание запущено.

Порядок действий

  1. Отключите зависшее регламентное задание (снимите флажок «Использовать»), чтобы оно не стартовало заново.
  2. Отмените выполняющееся фоновое задание командой отмены.
  3. Если оно не отменяется, завершите сеанс, в котором оно выполняется (см. предыдущий раздел).
  4. Устраните причину по журналу регистрации и включите задание обратно.
  5. Запустите его вручную один раз и убедитесь, что процессы двинулись.

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

Диагностика: выберите симптом

Как снять задачи с маршрута согласования

Бывает нужно убрать не весь процесс, а одну задачу: сотрудник уволился, роль пустая, исполнитель недоступен. Удалять задачу отдельно от процесса обычно не стоит, потому что маршрут потеряет шаг и «зависнет» ещё сильнее.

Варианты по возрастанию радикальности

СпособКогда подходитРиск
Переадресовать задачу другому исполнителюИсполнитель уволен или в отпускеМинимальный: история сохраняется
Изменить состав исполнителей ролиРоль пуста или на ней нет нужного человекаНизкий, но затронет и другие процессы по роли
Выполнить задачу от имени администратора с комментариемШаг формальный и маршрут должен идти дальшеСредний: в истории появится ваша подпись
Прервать процесс и стартовать зановоМаршрут сломан или документ изменилсяВысокий: теряется прогресс согласования
Пометить на удаление и удалить процессПроцесс создан по ошибке и не нуженНеобратимо, пропадает история

Если исполнитель уволен

Раньше чем удалять что-либо, проверьте, не привязаны ли задачи к роли, а не к человеку. Если да, достаточно заменить исполнителя в роли, и задачи придут новому сотруднику без вмешательства в процесс.

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

Прерывание процесса в середине согласования не отменяет уже поставленные визы. Но документ может остаться в промежуточном состоянии, и его придётся перевести вручную.

Что делать с зависшим процессом?

Блокировки на уровне СУБД

Если интерфейс не помогает, а в консоли кластера видны висящие блокировки, дело в СУБД. Этот раздел для тех, у кого есть доступ к серверу баз данных. Если его нет, передайте задачу администратору СУБД.

Как понять, что это блокировки

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

Общая схема действий

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

Для PostgreSQL блокирующие процессы смотрят в представлении pg_stat_activity, а снять зависшую транзакцию можно функцией pg_terminate_backend с номером процесса. В MS SQL Server для этого есть sp_who2 и команда KILL.

-- PostgreSQL: кто и сколько висит в транзакции
SELECT pid, state, now() - xact_start AS длительность, left(query, 80)
FROM pg_stat_activity
WHERE state <> 'idle'
ORDER BY xact_start;

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

Почему процессы зависают и как этого избежать

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

Частые причины

  • 📉 Регламентные задания работают на сервере с нехваткой памяти или стоят в одной очереди с тяжёлыми обменами.
  • 🔁 Пользователи запускают сотни процессов сразу (массовое согласование), и фоновая обработка не успевает.
  • 🧩 В типовой маршрут добавлена доработка, которая падает на определённых данных.
  • 👤 Роли и группы исполнителей не поддерживаются: уволенные остаются в маршрутах.
  • 🛠 После обновления релиза не выполнена обработка отложенных обновлений.

Что настроить

  1. Раз в неделю смотрите регламентные задания на состояние «Ошибка». Пусть это будет привычкой, а не реакцией на жалобы.
  2. Разнесите тяжёлые задания по времени: обмены и массовые рассылки не должны совпадать с пиком работы пользователей.
  3. Закрывайте старые процессы. Тысячи «вечных» процессов замедляют списки и фоновую обработку.
  4. Назначайте заместителей на время отпусков, чтобы задачи не простаивали.
  5. После обновления проверьте, что отложенные обработчики завершились.
Перед удалением процесса
Выполнено: 0 / 5

Частые вопросы

Можно ли удалить процесс, который уже завершён?
Да. Завершённый процесс удаляется так же: пометка на удаление и запуск «Удаления помеченных объектов». Но вместе с ним пропадёт история согласования, поэтому для контрольных документов лучше оставить.
Почему после удаления процесса документ остался в статусе «На согласовании»?
Статус документа не всегда пересчитывается автоматически. Смените состояние вручную в карточке документа или запустите новый процесс.
Можно ли удалить сразу много процессов?
Да. Отберите их в списке по нужному условию, выделите группой и пометьте на удаление. Затем запустите удаление помеченных объектов. На больших объёмах делайте это ночью.
Что делать, если помеченный процесс не удаляется и ссылок не видно?
Проверьте, не держит ли его чужой сеанс или блокировка. Завершите сеанс и повторите. Если не помогло, посмотрите журнал на ошибки при удалении: там указан объект-помеха.
Достаточно ли прав обычного пользователя?
Нет. Для остановки чужих процессов, управления сеансами и заданиями нужна роль администратора системы или полные права, а для СУБД отдельный доступ.