Фоновое задание 1С заблокировано другим экземпляром задания: решение
- Ошибка в Журнале регистрации:
Фоновое задание заблокировано другим экземпляром заданияилиНе удалось запустить фоновое задание с тем же ключом. - Регламентные задания (например, загрузка курсов валют, обмен данными, проведение документов) пропускают итерации расписания.
- В списке активных сеансов фоновое задание числится работающим часами, но фактически не выполняет I/O операций.
1. Анализ параметра «Ключ» фонового задания
Платформа 1С гарантирует уникальность выполнения заданий с одинаковым Ключом (параметр Ключ метода ФоновыеЗадания.Выполнить или свойство регламентного задания). Если предыдущий экземпляр еще не завершен, запуск нового блокируется.
// Поиск активных заданий с данным ключом перед запуском
ПараметрыОтбора = Новый Структура("Ключ, Состояние", "ОбменДанными_УТ", СостояниеФоновогоЗадания.Активно);
АктивныеЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(ПараметрыОтбора);
Если АктивныеЗадания.Количество() > 0 Тогда
// Логика обработки: ожидание или отмена предыдущего зависшего задания
КонецЕсли;2. Завершение зависших фоновых сеансов через консоль
Если фоновое задание «умерло» на уровне СУБД, но сессия числится в кластере 1С:
- Откройте консоль кластера серверов 1С.
- Перейдите в ветку Сеансы информационной базы.
- Найдите фоновый сеанс с соответствующим именем пользователя или фонового задания.
- Нажмите правой кнопкой мыши -> Удалить (Завершить сеанс).
3. Корректировка интервала расписания
Если задание не успевает выполниться за установленный интервал (например, задание длится 7 минут, а расписание запускает его каждые 5 минут), увеличьте интервал повтора расписания.
Частые вопросы (FAQ)
Почему после удаления фонового сеанса из консоли блокировка ключа не снимается сразу?
Менеджеру кластера (ras/ragent) требуется время (до 1-2 минут) для завершения потока и очистки внутренних мьютексов блокировок сессий в shared memory.
Как программно отменить зависшее фоновое задание по его GUID?
Получите объект ФоновоеЗадание через ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор) и вызовите метод Задание.Отменить().
Что произойдет, если запустить фоновое задание с пустым ключом?
Если ключ пустой, платформа разрешает одновременный запуск любого количества параллельных экземпляров данного фонового задания.
Как заблокировать запуск всех фоновых заданий на время регламентных работ?
В свойствах информационной базы в консоли администрирования установите флаг 'Блокировка регламентных заданий включена' и укажите дату начала блокировки.