Зависший процесс или задача в 1С:ДО: как остановить и убрать
Содержание
Удалить процесс в 1С:Документооборот напрямую нельзя, пока он запущен: сначала его нужно остановить или прервать, затем пометить на удаление и выполнить «Удаление помеченных объектов». Если процесс «завис» и не реагирует, причина обычно в застрявшем фоновом задании, незавершённом сеансе или блокировке на уровне СУБД, и лечится это в другом порядке.
Ниже порядок действий администратора для 1С:ДО 2 и 3: от безопасных шагов к радикальным. Названия пунктов меню в разных релизах немного отличаются, поэтому там, где путь зависит от версии, указано, как найти нужное на экране.
Всё, что связано с удалением процессов, задач и сеансов, делайте только после резервной копии базы. Удалённый процесс вместе с его задачами восстановить нельзя.
Сначала разберитесь, что именно зависло
Слово «завис» в документообороте означает три разных ситуации. Лечат их по-разному, поэтому потратьте пять минут на диагностику.
Три типичных симптома
- 🔄 Процесс «в работе», но задач у исполнителей нет. Маршрут не двинулся дальше: фоновое задание, которое должно создать следующую задачу, не отработало или упало.
- ⏳ Задача висит у исполнителя, а он её выполнить не может. Кнопка «Выполнено» не нажимается, форма выдаёт ошибку или ждёт ответа сервера.
- 🔒 Всё замирает на несколько минут и потом идёт дальше. Это почти всегда блокировки, а не сломанный процесс.
Что проверить в первую очередь
- Откройте карточку процесса и посмотрите вкладку с историей: на каком шаге остановился маршрут и когда была последняя запись.
- Загляните в журнал регистрации (меню «Администрирование» или «Сервис» в зависимости от интерфейса, либо через конфигуратор). Фильтр: период зависания, уровень «Ошибка», пользователь или фоновое задание.
- Проверьте, не осталась ли у процесса пометка на удаление. Помеченный, но не удалённый процесс продолжает висеть в списках.
- Выясните, один ли это процесс или массовая проблема. Если не двигаются все процессы, ищите причину в регламентных заданиях или в сервере, а не в конкретной карточке.
💡 Если в журнале одна и та же ошибка повторяется каждые несколько минут, это зацикленное регламентное задание. Удалять процесс бессмысленно: следующий запуск задания создаст проблему заново.
Остановка процесса и удаление через интерфейс
Это штатный путь, и в большинстве случаев его хватает. Пробуйте его до любых вмешательств в сеансы и СУБД.
Остановить, прервать, пометить
- Откройте список процессов (раздел «Бизнес-процессы» или «Процессы» в навигаторе) и найдите нужный по номеру или названию. Для поиска удобно отфильтровать список по состоянию «Стартован».
- В карточке процесса используйте команду остановки или прекращения. Остановленный процесс можно продолжить, прерванный — нет.
- Когда процесс перестал быть активным, пометьте его на удаление (клавиша
Delв списке или команда «Пометить на удаление»). - Откройте обработку «Удаление помеченных объектов» (в администраторском разделе, если не видите — найдите через поиск по командам интерфейса) и запустите удаление.
После удаления процесса исчезают и его задачи: они подчинены процессу.
Когда штатное удаление не срабатывает
Типичная причина отказа — объект, на который ссылаются другие данные. Платформа покажет список таких ссылок. В документообороте это чаще всего:
- вложенные подпроцессы, созданные от родителя;
- документ, у которого процесс прописан в связанных объектах;
- записи в регистрах хода выполнения.
Сначала разберитесь с подпроцессами, потом с родителем. Не пытайтесь «снять ссылки» через конфигуратор, пока не использованы все штатные способы.
Если процесс запущен по типовому маршруту и затрагивает согласование договора или приказа, до удаления согласуйте это с ответственным за документ. Из журнала согласований пропадёт след, что документ проходил проверку.
Сеансы пользователей: кто держит процесс
Иногда процесс не удаляется, потому что с ним работает чей-то сеанс. Форма карточки открыта, задача в работе, клиент завис, а сервер считает пользователя активным.
Где смотреть активные сеансы
- В самой базе: меню «Администрирование», пункт со списком активных пользователей (в конфигураторе — «Администрирование → Активные пользователи»).
- В консоли кластера серверов 1С: узел «Сеансы» у нужной информационной базы показывает также спящие сеансы и их соединения.
Смотрите на колонки «Начало сеанса», «Последняя активность» и «Приложение». Сеанс фонового задания (приложение «Фоновое задание») нельзя путать с обычным пользовательским: его удаление прервёт задание на середине.
Что делать
- Попросите пользователя закрыть карточку и сам клиент. Это самое безопасное.
- Если не помогло, завершите его сеанс в списке активных пользователей или в консоли кластера.
- Повторите остановку и удаление процесса.
Не завершайте сеанс, в котором сейчас идёт проведение или загрузка данных. Прерванная транзакция откатится, но человек потеряет введённое.
Очередь регламентных и фоновых заданий
Процессы в документообороте двигают регламентные задания: они проверяют сроки, рассылают уведомления, запускают следующие шаги. Если задание «залипло», маршрут стоит, а задачи не создаются.
Как найти задание
В администраторском разделе откройте «Регламентные и фоновые задания» (в зависимости от релиза — в блоке «Поддержка и обслуживание» либо в настройках программы). В списке:
- отберите задания по состоянию «Выполняется» или «Ошибка»;
- посмотрите время начала: задание, которое «выполняется» уже несколько часов, точно застряло;
- откройте подробности: там сообщение об ошибке и сеанс, в котором задание запущено.
Порядок действий
- Отключите зависшее регламентное задание (снимите флажок «Использовать»), чтобы оно не стартовало заново.
- Отмените выполняющееся фоновое задание командой отмены.
- Если оно не отменяется, завершите сеанс, в котором оно выполняется (см. предыдущий раздел).
- Устраните причину по журналу регистрации и включите задание обратно.
- Запустите его вручную один раз и убедитесь, что процессы двинулись.
💡 Если процессов много, а задание выполняется долго, не включайте несколько копий задания «для скорости». Параллельные запуски ссорятся за те же записи и усиливают блокировки.
Как снять задачи с маршрута согласования
Бывает нужно убрать не весь процесс, а одну задачу: сотрудник уволился, роль пустая, исполнитель недоступен. Удалять задачу отдельно от процесса обычно не стоит, потому что маршрут потеряет шаг и «зависнет» ещё сильнее.
Варианты по возрастанию радикальности
| Способ | Когда подходит | Риск |
|---|---|---|
| Переадресовать задачу другому исполнителю | Исполнитель уволен или в отпуске | Минимальный: история сохраняется |
| Изменить состав исполнителей роли | Роль пуста или на ней нет нужного человека | Низкий, но затронет и другие процессы по роли |
| Выполнить задачу от имени администратора с комментарием | Шаг формальный и маршрут должен идти дальше | Средний: в истории появится ваша подпись |
| Прервать процесс и стартовать заново | Маршрут сломан или документ изменился | Высокий: теряется прогресс согласования |
| Пометить на удаление и удалить процесс | Процесс создан по ошибке и не нужен | Необратимо, пропадает история |
Если исполнитель уволен
Раньше чем удалять что-либо, проверьте, не привязаны ли задачи к роли, а не к человеку. Если да, достаточно заменить исполнителя в роли, и задачи придут новому сотруднику без вмешательства в процесс.
Если задачи именные, переадресуйте их из списка задач (команда «Перенаправить» или «Переадресовать» в карточке). Для массового случая откройте список задач, отберите их по исполнителю и обработайте группой.
Прерывание процесса в середине согласования не отменяет уже поставленные визы. Но документ может остаться в промежуточном состоянии, и его придётся перевести вручную.
Блокировки на уровне СУБД
Если интерфейс не помогает, а в консоли кластера видны висящие блокировки, дело в СУБД. Этот раздел для тех, у кого есть доступ к серверу баз данных. Если его нет, передайте задачу администратору СУБД.
Как понять, что это блокировки
- В консоли кластера в разделе «Блокировки» есть записи с большим временем ожидания.
- В журнале регистрации встречаются «Превышено время ожидания блокировки» или сообщения о взаимоблокировке.
- Пользователи жалуются на долгие записи именно в документах и процессах, а справочники открываются нормально.
Общая схема действий
- Найдите сеанс, который держит блокировку, в консоли кластера (колонка «Заблокирован» и «Блокирующий сеанс» или аналогичные).
- Выясните, чей он: пользователь, фоновое задание или внешний обмен.
- Попросите завершить работу или завершите сеанс из консоли кластера. Этого достаточно в большинстве случаев.
- Только если сеанс в 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;
Не убивайте процессы СУБД вслепую и не правьте таблицы базы руками. Прямое удаление строк процессов и задач в таблицах оставит «висячие» ссылки, и база начнёт выдавать ошибки в самых неожиданных местах. Для этого есть штатное удаление и платформенные инструменты.
Почему процессы зависают и как этого избежать
Разовое удаление лечит симптом. Если зависания повторяются, нужно менять сам порядок работы.
Частые причины
- 📉 Регламентные задания работают на сервере с нехваткой памяти или стоят в одной очереди с тяжёлыми обменами.
- 🔁 Пользователи запускают сотни процессов сразу (массовое согласование), и фоновая обработка не успевает.
- 🧩 В типовой маршрут добавлена доработка, которая падает на определённых данных.
- 👤 Роли и группы исполнителей не поддерживаются: уволенные остаются в маршрутах.
- 🛠 После обновления релиза не выполнена обработка отложенных обновлений.
Что настроить
- Раз в неделю смотрите регламентные задания на состояние «Ошибка». Пусть это будет привычкой, а не реакцией на жалобы.
- Разнесите тяжёлые задания по времени: обмены и массовые рассылки не должны совпадать с пиком работы пользователей.
- Закрывайте старые процессы. Тысячи «вечных» процессов замедляют списки и фоновую обработку.
- Назначайте заместителей на время отпусков, чтобы задачи не простаивали.
- После обновления проверьте, что отложенные обработчики завершились.