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