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

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

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

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

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

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

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

Где посмотреть список активных фоновых заданий

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

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

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

Состояние «Выполняется» часамиВероятное зависание

Сравните с обычной длительностью этого задания

Чередование «Ошибка» и перезапускЗадание падает и стартует заново

Откройте сообщения об ошибке в консоли заданий

Пользователи жалуются на блокировкиЗадание удерживает данные

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

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

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

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

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

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

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

Альтернатива — раздел «Блокировки», где видно, какие объекты удерживает соединение. Это помогает подтвердить, что именно фоновое задание является источником проблем с доступом к данным перед его завершением.

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

Отключение регламентного задания, которое порождает фоновые

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

В файловом режиме регламентные задания выполняются, только если запущен сеанс с включённым выполнением заданий либо отдельный процесс, стартованный с параметром /ExecuteScheduledJobs. Отключение задания в консоли действует и здесь, но дополнительно проверьте, не запущен ли отдельный процесс-исполнитель.

Для временной остановки всех регламентных заданий в клиент-серверном режиме используйте свойство информационной базы «Блокировка регламентных заданий» в консоли кластера (свойства базы → флаг «Блокировка регламентных заданий включена»). Это удобно при обновлении конфигурации или регламентных работах.

Программный способ: отмена и блокировка из кода

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

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

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

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

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

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

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

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

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

«Отменено» или «Ошибка», новых запусков нет

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

Состояние «Выполняется» не меняется более нескольких минут

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

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

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

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

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

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

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

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

Часто задаваемые вопросы

Задание не реагирует на кнопку «Отменить». Что делать?

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

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

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

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

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

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

Его перезапускает регламентное задание по расписанию. Отмена фонового экземпляра не отключает расписание. Снимите флаг использования у регламентного задания или включите блокировку регламентных заданий в свойствах базы.

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

Используйте консоль «Регламентные и фоновые задания» в конфигураторе или типовой консоли. Если задание выполняется отдельным процессом, завершите этот процесс 1cv8 в диспетчере задач, предварительно убедившись, что это именно процесс-исполнитель заданий, а не сеанс пользователя.

Где посмотреть, из-за чего задание зависло?

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

Итог

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

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