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

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

Как завершить все фоновые задания в 1С

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

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

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

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

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

Зависание обычно происходит по трём причинам: зацикливание в коде обработчика, ожидание ответа от внешнего сервиса (сайт, FTP, веб-сервис) без таймаута и взаимоблокировки при конкурентном доступе к данным. Признак проблемы — задание в статусе «Выполняется» гораздо дольше обычного времени его работы, а связанные документы или регистры недоступны пользователям.

Завершение через стандартную консоль заданий

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

Откройте нужное регламентное задание — в нём отображается последнее фоновое задание. Если задание активно, доступна команда отмены выполнения. Для разового завершения конкретного задания этого достаточно, но массово снять десятки зависших сеансов через этот интерфейс неудобно.

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

Массовое завершение через «Инструменты разработчика»

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

Альтернатива — любая обработка «Консоль кода» или внешняя обработка с вызовом методов менеджера фоновых заданий. Такой подход работает и в файловом, и в клиент-серверном режиме, но требует права «Администрирование» и, для клиент-серверной базы, права на прерывание чужих сеансов.

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

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

Завершение через консоль кластера серверов

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

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

Особенности файлового режима

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

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

Сравнение способов завершения

Консоль заданий в базе

Подходит для разовой остановки, не требует доступа к серверу. Не справляется с «мертво» зависшими сеансами.

Программное прерывание кодом

Удобно для массового завершения по отбору. Требует прав администратора и времени на отработку Прервать().

Консоль кластера

Гарантированно снимает любой сеанс. Нужен доступ к серверу, есть риск ошибочно завершить чужие сеансы.

Перезапуск службы агента сервера

Крайняя мера при полном зависании кластера. Разрывает все соединения всех баз.

Как предотвратить повторные зависания

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

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

Типичные ошибки
01
Завершение задания без анализа причины — зависание повторяется при следующем запуске по расписанию
02
Перезапуск сервера 1С в рабочее время вместо точечного снятия сеанса — обрыв работы всех пользователей
03
Прерывание задания обмена данными в середине транзакции без проверки состояния — возможны незавершённые загрузки и расхождения данных
04
Отключение регламентного задания вместо завершения зависшего фонового — активный сеанс продолжает работать

Проверка результата после завершения

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

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

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

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

Список активных фоновых заданий
Норма

Зависшего задания нет в списке

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

Задание снова активно через несколько минут

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

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

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

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

Доступность данных
Норма

Документы и регистры проводятся без ошибок блокировки

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

Ошибки «Конфликт блокировок» сохраняются

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

Чем отличается отключение регламентного задания от завершения фонового?

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

Задание не прерывается методом Прервать(). Что делать?

Метод Прервать() посылает заданию сигнал, но если код находится в длительном запросе к СУБД или ожидании внешнего сервиса, прерывание отработает только после возврата управления. В таком случае завершите сеанс через консоль кластера серверов.

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

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

Опасно ли прерывать фоновое задание обмена данными?

Прерывание в середине загрузки может оставить частично записанные данные. После такого прерывания проверьте состояние обмена и при необходимости выполните повторную загрузку — механизмы обмена обычно корректно догружают недостающие данные.

Почему завершённое задание запускается снова?

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

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

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

Итог

Что важно запомнить

Разовое зависшее задание завершайте через консоль заданий, массовое — кодом с Прервать(), безнадёжно зависшее — через консоль кластера. Всегда проверяйте журнал регистрации и расписание, иначе задание зависнет снова.