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