К статье
Практический материал

Администрирование · 9 мин

Как удалить соединение фонового задания в 1С

Как найти и удалить зависшее соединение фонового задания в 1С: через консоль кластера, конфигуратор и код. Причины, риски и проверка результата.

Зависшее соединение фонового задания — частая причина того, что регламентные операции в 1С не выполняются, база не закрывается для обновления, а в консоли кластера «висят» сеансы, которые невозможно завершить обычным образом. Фоновое задание создаёт собственное соединение с информационной базой, и если процесс на стороне сервера завершился аварийно, соединение может остаться активным и удерживать блокировки.

Удалить такое соединение можно несколькими способами: через консоль кластера серверов 1С, программно из конфигуратора или через административные обработки. Выбор зависит от того, работаете ли вы с клиент-серверной или файловой базой, есть ли у вас права администратора кластера и насколько срочно нужно освободить ресурсы.

Ниже разобраны все рабочие методы, их ограничения и риски, а также способы проверить, что соединение действительно удалено и фоновое задание не запустится повторно.

Что такое соединение фонового задания и почему оно зависает

Каждое фоновое задание в 1С при запуске открывает отдельное соединение с информационной базой. В клиент-серверном варианте это соединение видно в консоли кластера в ветке «Соединения» и связано с сеансом типа «Фоновое задание». Пока задание выполняется, соединение активно и удерживает ресурсы сервера.

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

Как найти зависшее соединение в консоли кластера

Откройте консоль управления серверами 1С (оснастка «Администрирование серверов 1С Предприятия»). Раскройте нужный кластер, затем ветку «Информационные базы» и выберите вашу базу. Внутри есть два полезных раздела: «Сеансы» и «Соединения».

В разделе «Сеансы» отсортируйте список по колонке «Приложение» — фоновые задания будут помечены как «Фоновое задание». Обратите внимание на колонки «Начало сеанса» и «Последняя активность»: если активности нет длительное время, а сеанс висит, это признак зависания. В разделе «Соединения» можно увидеть само соединение с указанием рабочего процесса и номера соединения.

Тип приложения в сеансеФоновое задание

Подтверждает, что сеанс создан именно фоновым заданием, а не пользователем

Последняя активностьДавно не менялась

Сеанс не выполняет запросов — вероятно, завис

БлокировкиСеанс удерживает управляемые блокировки

Мешает работе других пользователей и обновлению конфигурации

Состояние задания в консоли заданийАктивно, хотя по факту не выполняется

Рассинхронизация состояния задания и соединения

Удаление соединения через консоль кластера

Это основной и самый безопасный способ. В разделе «Сеансы» выделите сеанс фонового задания, нажмите правую кнопку мыши и выберите «Удалить». Сервер завершит сеанс и связанное с ним соединение. Само фоновое задание при этом перейдёт в состояние «Завершено аварийно» либо будет отменено, в зависимости от версии платформы.

Если нужно удалить именно соединение, перейдите в раздел «Соединения», найдите строку с нужным номером сеанса и также удалите её через контекстное меню. Учтите: удаление соединения без завершения сеанса может привести к тому, что сеанс пересоздаст соединение, поэтому предпочтительнее удалять сеанс целиком.

Порядок действий в консоли кластера
  1. 1
    Откройте консоль администрирования серверов 1С и раскройте нужный кластер
  2. 2
    Перейдите: Информационные базы → ваша база → Сеансы
  3. 3
    Найдите сеанс с типом «Фоновое задание» и проверьте время последней активности
  4. 4
    Щёлкните правой кнопкой по сеансу и выберите «Удалить»
  5. 5
    Проверьте в разделе «Соединения», что связанное соединение исчезло
  6. 6
    Откройте консоль фоновых заданий в базе и убедитесь, что задание завершено или отменено

Программное завершение сеансов фоновых заданий

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

Для отмены самого фонового задания применяется метод Отменить() объекта фонового задания, полученного через ФоновыеЗадания.ПолучитьФоновыеЗадания() с отбором по состоянию «Активно». Отмена задания приводит к завершению его сеанса и закрытию соединения.

bsl
Отбор = Новый Структура("Состояние", СостояниеФоновогоЗадания.Активно);
Задания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
Для Каждого Задание Из Задания Цикл
    Задание.Отменить();
КонецЦикла;

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

Файловая база и крайние меры

В файловом варианте 1С соединения фоновых заданий не видны в консоли кластера, потому что кластера нет. Зависшее фоновое задание здесь проявляется как процесс 1cv8.exe на компьютере, где оно было запущено. Завершение такого процесса через диспетчер задач закроет и соединение с базой.

Крайняя мера для клиент-серверного варианта — перезапуск службы агента сервера 1С. Это гарантированно разрывает все соединения, включая зависшие, но одновременно отключает всех пользователей базы без сохранения их несохранённых данных. Применяйте этот способ только в нерабочее время или когда другие методы не сработали.

Проверка результата и профилактика

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

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

Контрольные точки

Как проверить результат

Список сеансов в консоли кластера
Норма

Сеанс фонового задания отсутствует

Тревожный признак

Сеанс появился снова и не проявляет активности

Состояние задания в консоли заданий
Норма

«Завершено» или «Отменено»

Тревожный признак

Остаётся «Активно» длительное время

Блокировки в базе
Норма

Управляемые блокировки освобождены

Тревожный признак

Записи о блокировках удерживаются мёртвым сеансом

Журнал регистрации
Норма

Есть запись о завершении или отмене задания

Тревожный признак

Повторяющиеся ошибки запуска задания

Типичные ошибки
01
Удаление только соединения без завершения сеанса — сеанс пересоздаёт соединение, проблема возвращается
02
Отмена задания без анализа причины — регламентное задание запускается по расписанию и зависает снова
03
Перезапуск сервера в рабочее время — потеря несохранённых данных пользователей
04
Игнорирование блокировок — после удаления сеанса записи могут оставаться заблокированными до тайм-аута

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

Чем отличается удаление сеанса от удаления соединения?

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

Можно ли удалить соединение фонового задания без прав администратора кластера?

Да, частично. Из самой базы можно отменить активное фоновое задание методом Отменить(), если у вас есть соответствующие права в конфигурации. Но напрямую удалить сеанс или соединение в кластере без административных прав нельзя.

Почему после удаления сеанса фоновое задание запускается снова?

Потому что регламентные задания выполняются по расписанию, а фоновые задания могут перезапускаться кодом конфигурации. Удаление соединения устраняет симптом, но не причину. Отключите расписание задания и разберитесь с причиной зависания — ошибкой в коде, блокировками или проблемами обмена данными.

Опасно ли удалять зависшее соединение для целостности данных?

Если задание действительно зависло и не выполняет транзакций, удаление безопасно: незавершённая транзакция будет откачена сервером СУБД. Риск возникает, только если задание в момент завершения активно писало данные — тогда часть операции может не выполниться, но целостность базы транзакционный механизм сохранит.

Как найти зависшие фоновые задания без консоли кластера?

Используйте консоль заданий (в типовых конфигурациях — раздел «Администрирование» → «Регламентные и фоновые задания») и отфильтруйте задания в состоянии «Активно». Задание, которое активно неоправданно долго, с высокой вероятностью зависло. Дополнительно проверьте журнал регистрации на предмет ошибок выполнения.

Что делать, если сеанс не удаляется из консоли кластера?

Определите рабочий процесс (rphost), в котором выполняется сеанс — его номер виден в свойствах соединения. Если удаление сеанса не помогает, можно перезапустить конкретный рабочий процесс через консоль кластера, не останавливая весь сервер. Это разорвёт только соединения данного процесса.