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

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

Как прекратить фоновое задание в 1С

Способы остановить фоновое задание в 1С: через консоль заданий, консоль кластера, код и диспетчер. Риски, проверка результата, типичные ошибки и FAQ.

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

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

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

Как понять, что задание нужно остановить

Не всякое долгое задание — зависшее. Обмен с большим объёмом данных или групповое перепроведение могут работать десятки минут, и это норма. Тревожный признак — задание не завершается заметно дольше обычного времени, при этом сеанс не потребляет ресурсы процессора (значит, ждёт блокировку) или, наоборот, бесконечно грузит ядро на 100% без прогресса.

Откройте консоль кластера и посмотрите на сеанс фонового задания: колонки «Процессорное время», «Прочитано», «Записано». Если значения не меняются несколько минут — задание, скорее всего, застряло в ожидании блокировки или взаимоблокировке. Параллельно проверьте список активных пользователей: иногда фоновое задание ждёт, пока кто-то отпустит заблокированный объект.

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

Сеанс активен, CPU 0%Ожидание блокировки

Проверить блокировки в консоли кластера и журнал регистрации

Сеанс активен, CPU 100%Возможен бесконечный цикл

Смотреть длительность: если сильно дольше обычного — останавливать

Задание перезапускаетсяОшибка в регламентном задании

Отключить использование регламентного задания, а не только текущий сеанс

Задание висит в файловой базеНет консоли кластера

Использовать консоль заданий или завершить сеанс через список активных пользователей

Остановка через консоль кластера серверов 1С

Это основной способ для клиент-серверного режима. Откройте оснастку «Администрирование серверов 1С:Предприятия» на сервере или на машине администратора, разверните нужный кластер, перейдите в ветку «Сеансы». Найдите сеанс с типом «Фоновое задание» — в колонке «Приложение» будет указано BackgroundJob, а в описании часто видно имя метода или регламентного задания.

Выделите сеанс и выберите в контекстном меню «Удалить» (или «Прервать» — зависит от версии платформы). Сеанс завершится, а вместе с ним прекратится выполнение фонового задания. Если у сеанса открыты соединения с рабочими процессами, они закроются автоматически.

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

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

Остановка через обработку «Консоль заданий»

Штатная обработка «Консоль заданий» (входит в состав БСП и доступна на диске ИТС, а также встроена во многие типовые конфигурации) показывает список регламентных и фоновых заданий с их состоянием. Откройте её в режиме предприятия под пользователем с правами администратора.

На вкладке «Фоновые задания» найдите нужную строку — видно наименование, состояние («Выполняется», «Завершено», «Ошибка»), время начала. Выделите выполняющееся задание и нажмите кнопку «Отменить». Платформа отправит заданию команду прерывания. Учтите: отмена сработает корректно, только если код задания не находится в непрерываемой длительной операции — в некоторых случаях фактическая остановка произойдёт с задержкой.

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

Программная отмена через встроенный язык

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

bsl
Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Новый УникальныйИдентификатор(ИдСтрокой));
Если Задание <> Неопределено И Задание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
    Задание.Отменить();
КонецЕсли;

Для массового поиска удобен метод ФоновыеЗадания.ПолучитьФоновыеЗадания() с отбором: можно получить все активные задания и отменить те, что выполняются дольше заданного порога. Состояние активного задания — СостояниеФоновогоЗадания.Активно.

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

Что делать в файловой базе

В файловом режиме нет консоли кластера, а фоновые задания выполняются в отдельном сеансе того же процесса клиентского приложения (или в сеансе, запущенном планировщиком). Первый вариант — та же «Консоль заданий» с кнопкой «Отменить»: для файловой базы это основной инструмент.

Второй вариант — завершить сеанс фонового задания через список активных пользователей: «Администрирование → Активные пользователи», найти сеанс с приложением «Фоновое задание» и нажать «Завершить сеанс». Если база открыта у нескольких пользователей по сети, делать это нужно под учётной записью с правами администратора.

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

Крайние меры: завершение rphost и остановка на уровне СУБД

Если сеанс не удаляется из консоли кластера (такое бывает при «залипших» соединениях), остаётся завершить рабочий процесс rphost, в котором выполняется сеанс. В консоли кластера посмотрите, в каком рабочем процессе числится сеанс, затем завершите процесс через диспетчер задач сервера или перезапустите службу агента сервера 1С.

Это грубое вмешательство: в одном rphost обычно работают и другие сеансы пользователей, которые будут разорваны с ошибкой. Поэтому такой способ применяют в нерабочее время или предварительно предупредив пользователей. Альтернатива — завершить конкретный запрос на стороне СУБД (например, KILL сессии в MS SQL Server), но это тоже требует понимания, какая именно сессия соответствует заданию.

Проверка результата и типичные ошибки

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

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

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

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

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

Событие завершения задания с состоянием «Отменено»

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

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

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

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

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

Сеанс остался и потребляет ресурсы

Регламентное задание
Норма

Флаг «Использование» снят до устранения причины

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

Новые фоновые задания стартуют по расписанию

Данные, обработанные заданием
Норма

Объекты согласованы, очереди обмена корректны

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

Непроведённые документы, дубли, оборванный обмен

Итог

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

Сначала диагностируйте, потом останавливайте. Основные инструменты: консоль кластера (удаление сеанса) и «Консоль заданий» (кнопка «Отменить»), программно — метод Отменить(). Если задание порождено регламентным, отключайте само регламентное задание. После остановки проверяйте журнал регистрации и целостность данных.

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

Задание нажимаю «Отменить», но оно продолжает выполняться. Почему?

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

Как найти уникальный идентификатор фонового задания для программной отмены?

При запуске метод Выполнить() возвращает объект фонового задания, у которого есть свойство УникальныйИдентификатор — его можно сохранить. Если задание запущено не вами, получите список через ФоновыеЗадания.ПолучитьФоновыеЗадания() с отбором по состоянию «Активно» и возьмите идентификаторы из результата.

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

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

Опасно ли завершать сеанс фонового задания через консоль кластера?

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

В файловой базе фоновое задание не отображается в списке активных пользователей. Что делать?

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

Как предотвратить зависание фоновых заданий в будущем?

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