Администрирование · 9 мин
Как удалить соединение фонового задания в 1С
Как найти и удалить зависшее соединение фонового задания в 1С: через консоль кластера, конфигуратор и код. Причины, риски и проверка результата.
Зависшее соединение фонового задания — частая причина того, что регламентные операции в 1С не выполняются, база не закрывается для обновления, а в консоли кластера «висят» сеансы, которые невозможно завершить обычным образом. Фоновое задание создаёт собственное соединение с информационной базой, и если процесс на стороне сервера завершился аварийно, соединение может остаться активным и удерживать блокировки.
Удалить такое соединение можно несколькими способами: через консоль кластера серверов 1С, программно из конфигуратора или через административные обработки. Выбор зависит от того, работаете ли вы с клиент-серверной или файловой базой, есть ли у вас права администратора кластера и насколько срочно нужно освободить ресурсы.
Ниже разобраны все рабочие методы, их ограничения и риски, а также способы проверить, что соединение действительно удалено и фоновое задание не запустится повторно.
Что такое соединение фонового задания и почему оно зависает
Каждое фоновое задание в 1С при запуске открывает отдельное соединение с информационной базой. В клиент-серверном варианте это соединение видно в консоли кластера в ветке «Соединения» и связано с сеансом типа «Фоновое задание». Пока задание выполняется, соединение активно и удерживает ресурсы сервера.
Соединение «зависает» в нескольких типичных ситуациях: код фонового задания попал в бесконечный цикл, процесс rphost был принудительно завершён, произошёл обрыв связи между сервером 1С и СУБД, либо задание ожидает снятия блокировки, которую удерживает другой зависший сеанс. Во всех этих случаях задание фактически не работает, но соединение продолжает числиться активным.
Как найти зависшее соединение в консоли кластера
Откройте консоль управления серверами 1С (оснастка «Администрирование серверов 1С Предприятия»). Раскройте нужный кластер, затем ветку «Информационные базы» и выберите вашу базу. Внутри есть два полезных раздела: «Сеансы» и «Соединения».
В разделе «Сеансы» отсортируйте список по колонке «Приложение» — фоновые задания будут помечены как «Фоновое задание». Обратите внимание на колонки «Начало сеанса» и «Последняя активность»: если активности нет длительное время, а сеанс висит, это признак зависания. В разделе «Соединения» можно увидеть само соединение с указанием рабочего процесса и номера соединения.
Подтверждает, что сеанс создан именно фоновым заданием, а не пользователем
Сеанс не выполняет запросов — вероятно, завис
Мешает работе других пользователей и обновлению конфигурации
Рассинхронизация состояния задания и соединения
Удаление соединения через консоль кластера
Это основной и самый безопасный способ. В разделе «Сеансы» выделите сеанс фонового задания, нажмите правую кнопку мыши и выберите «Удалить». Сервер завершит сеанс и связанное с ним соединение. Само фоновое задание при этом перейдёт в состояние «Завершено аварийно» либо будет отменено, в зависимости от версии платформы.
Если нужно удалить именно соединение, перейдите в раздел «Соединения», найдите строку с нужным номером сеанса и также удалите её через контекстное меню. Учтите: удаление соединения без завершения сеанса может привести к тому, что сеанс пересоздаст соединение, поэтому предпочтительнее удалять сеанс целиком.
- 1Откройте консоль администрирования серверов 1С и раскройте нужный кластер
- 2Перейдите: Информационные базы → ваша база → Сеансы
- 3Найдите сеанс с типом «Фоновое задание» и проверьте время последней активности
- 4Щёлкните правой кнопкой по сеансу и выберите «Удалить»
- 5Проверьте в разделе «Соединения», что связанное соединение исчезло
- 6Откройте консоль фоновых заданий в базе и убедитесь, что задание завершено или отменено
Программное завершение сеансов фоновых заданий
Если доступа к консоли кластера нет, но есть права администратора в самой базе, можно завершить сеансы программно. Для этого используется метод ПолучитьСеансыИнформационнойБазы(), который возвращает массив сеансов, и COM-подключение к агенту сервера либо встроенные механизмы завершения сеансов (в типовых конфигурациях на БСП — функциональность «Активные пользователи» с возможностью завершения сеанса).
Для отмены самого фонового задания применяется метод Отменить() объекта фонового задания, полученного через ФоновыеЗадания.ПолучитьФоновыеЗадания() с отбором по состоянию «Активно». Отмена задания приводит к завершению его сеанса и закрытию соединения.
Отбор = Новый Структура("Состояние", СостояниеФоновогоЗадания.Активно);
Задания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
Для Каждого Задание Из Задания Цикл
Задание.Отменить();
КонецЦикла;Программный способ удобен для автоматизации: например, можно создать регламентную процедуру, которая отменяет задания, висящие дольше допустимого времени. Однако без прав администратора кластера возможности ограничены — отменить можно только задания текущей информационной базы.
Файловая база и крайние меры
В файловом варианте 1С соединения фоновых заданий не видны в консоли кластера, потому что кластера нет. Зависшее фоновое задание здесь проявляется как процесс 1cv8.exe на компьютере, где оно было запущено. Завершение такого процесса через диспетчер задач закроет и соединение с базой.
Крайняя мера для клиент-серверного варианта — перезапуск службы агента сервера 1С. Это гарантированно разрывает все соединения, включая зависшие, но одновременно отключает всех пользователей базы без сохранения их несохранённых данных. Применяйте этот способ только в нерабочее время или когда другие методы не сработали.
Проверка результата и профилактика
После удаления соединения убедитесь, что проблема решена полностью, а не частично. Проверьте три вещи: отсутствие сеанса в консоли кластера, состояние фонового задания в консоли заданий (оно не должно оставаться «Активно») и снятие блокировок, которые удерживал сеанс.
Если задание является регламентным, после отмены оно может запуститься снова по расписанию — и снова зависнуть, если причина в коде или данных. В этом случае временно отключите расписание задания, найдите причину зависания (бесконечный цикл, ожидание блокировки, ошибка обмена) и только после исправления включите задание обратно.
Как проверить результат
Сеанс фонового задания отсутствует
Сеанс появился снова и не проявляет активности
«Завершено» или «Отменено»
Остаётся «Активно» длительное время
Управляемые блокировки освобождены
Записи о блокировках удерживаются мёртвым сеансом
Есть запись о завершении или отмене задания
Повторяющиеся ошибки запуска задания
Частые вопросы
Чем отличается удаление сеанса от удаления соединения?
Сеанс — это логическая сессия работы с информационной базой, а соединение — физический канал между рабочим процессом и базой. Удаление сеанса автоматически закрывает связанные соединения, поэтому это предпочтительный способ. Удаление одного лишь соединения не завершает сеанс, и он может восстановить связь.
Можно ли удалить соединение фонового задания без прав администратора кластера?
Да, частично. Из самой базы можно отменить активное фоновое задание методом Отменить(), если у вас есть соответствующие права в конфигурации. Но напрямую удалить сеанс или соединение в кластере без административных прав нельзя.
Почему после удаления сеанса фоновое задание запускается снова?
Потому что регламентные задания выполняются по расписанию, а фоновые задания могут перезапускаться кодом конфигурации. Удаление соединения устраняет симптом, но не причину. Отключите расписание задания и разберитесь с причиной зависания — ошибкой в коде, блокировками или проблемами обмена данными.
Опасно ли удалять зависшее соединение для целостности данных?
Если задание действительно зависло и не выполняет транзакций, удаление безопасно: незавершённая транзакция будет откачена сервером СУБД. Риск возникает, только если задание в момент завершения активно писало данные — тогда часть операции может не выполниться, но целостность базы транзакционный механизм сохранит.
Как найти зависшие фоновые задания без консоли кластера?
Используйте консоль заданий (в типовых конфигурациях — раздел «Администрирование» → «Регламентные и фоновые задания») и отфильтруйте задания в состоянии «Активно». Задание, которое активно неоправданно долго, с высокой вероятностью зависло. Дополнительно проверьте журнал регистрации на предмет ошибок выполнения.
Что делать, если сеанс не удаляется из консоли кластера?
Определите рабочий процесс (rphost), в котором выполняется сеанс — его номер виден в свойствах соединения. Если удаление сеанса не помогает, можно перезапустить конкретный рабочий процесс через консоль кластера, не останавливая весь сервер. Это разорвёт только соединения данного процесса.