Что делать, если в базовой версии 1С зависло фоновое задание и блокирует работу?

Программист 1С v8.3 (Управляемые формы)
← На главную

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

Метод 1. Программная отмена всех фоновых заданий

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

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


ВсеФоновыеЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания();
Для Каждого ФоновоеЗадание Из ВсеФоновыеЗадания Цикл
    Попытка
        ФоновоеЗадание.Отменить();
        Сообщить("Задание отменено: " + ФоновоеЗадание.Наименование);
    Исключение
        Сообщить("Не удалось отменить задание: " + ФоновоеЗадание.Наименование + ". Ошибка: " + ОписаниеОшибки());
    КонецПопытки;
КонецЦикла;

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

Метод 2. Инициирование резервного копирования из пользовательского режима

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

Когда мы запускаем «Создание резервной копии» через меню «Администрирование» в режиме «1С:Предприятие» (не путать с выгрузкой .dt из Конфигуратора), система инициирует внутренние алгоритмы подготовки базы к копированию. Эти алгоритмы включают в себя принудительную проверку и попытку корректного завершения всех текущих транзакций и фоновых потоков.

  1. Перейдем в раздел АдминистрированиеОбслуживание.
  2. Найдем пункт Резервное копирование и восстановление.
  3. Нажмем Создание резервной копии.

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

Метод 3. Удаление сеанса через форму «Активные сеансы закрытия месяца»

В современных конфигурациях на базе БСП (Библиотеки стандартных подсистем) существует скрытая возможность управления сеансами через специализированные рабочие места. Если задание связано с регламентными операциями, рассмотрим альтернативный путь удаления через дерево сеансов.

Проанализируем шаги для удаления «упрямого» процесса:

  1. Откроем форму Регламентные операции по закрытию месяца.
  2. Нажмем кнопку Еще в верхней части командной панели.
  3. Выберем пункт Активные сеансы закрытия месяца.
  4. В открывшемся окне мы увидим иерархическое дерево процессов. Развернем ветку, соответствующую зависшему заданию.
  5. Выделим нужный элемент (лист дерева), нажмем правую кнопку мыши и выберем Удалить.

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

Метод 4. Очистка временных файлов и файлов блокировок (на уровне ОС)

Если программные методы не помогают, значит, информация о «зависшем» задании застряла в служебных файлах файловой базы данных. Проанализируем ситуацию: 1С при запуске проверяет наличие определенных файлов в каталоге с базой. Если в папке, где находится ваш файл 1Cv8.1CD, остались файлы с расширениями .1cl или .1ck после закрытия программы — это и есть причина блокировки.

Выполним следующие действия по шагам:

  1. Полностью закроем все окна 1С на данном компьютере и у всех пользователей (если база лежит в сети).
  2. Откроем Диспетчер задач и убедимся, что процессы 1cv8.exe, 1cv8c.exe и 1cv8s.exe отсутствуют.
  3. Перейдем в папку с информационной базой.
  4. Удалим файлы, имеющие расширения *.1cl, *.1ck, *.1cv8.lgd-journal.
  5. Дополнительно выполним очистку кэша. Для этого нужно перейти в каталоги:
    • %AppData%\1C\1cv8
    • %LocalAppData%\1C\1cv8
    И удалить там все папки с длинными именами-идентификаторами (типа eb42...).

После удаления этих данных система при следующем запуске будет вынуждена заново просканировать состояние базы и «забудет» о фантомном фоновом задании.

Метод 5. Использование утилиты chdbfl.exe

В редких случаях запись о фоновом задании остается в самих таблицах базы данных (например, в таблице ConfigRequests или системных таблицах заданий). Если база файловая, обычные методы не смогут вычистить эти записи, если они повреждены. Посмотрим на работу утилиты chdbfl.exe.

Эта утилита находится в папке с установленной платформой (обычно C:\Program Files\1cv8\номер_версии\bin\). Запустим ее, укажем путь к файлу 1Cv8.1CD и обязательно поставим галочку Исправлять обнаруженные ошибки. Утилита пересоберет внутреннюю структуру таблиц и удалит записи, которые ссылаются на несуществующие или некорректные сеансы, что приведет к исчезновению зависшего задания.

Метод 6. Монопольный запуск и «Бизнес Старт»

Проанализируем специфику конфигурации Бизнес Старт. Часто она работает в тесной связке с облачными сервисами (например, 1С:Фреш). Зависшее задание «Обновление списка фоновых заданий» может пытаться синхронизироваться с облаком. Рассмотрим хитрость с отключением сети:

  1. Отключим физически интернет или сетевой адаптер на компьютере.
  2. Запустим 1С. Поскольку доступа к внешним ресурсам нет, фоновое задание не сможет инициализироваться и через некоторое время завершится по таймауту или выдаст ошибку, которая позволит нам зайти в базу монопольно.
  3. В параметрах запуска (в окне выбора баз нажать «Изменить») можно временно прописать ключ /m. Этот ключ заставляет систему пытаться войти в монопольном режиме, отсекая все фоновые процессы на этапе старта.

Таким образом, мы рассмотрели комплексный подход к решению проблемы. Начните с Метода 1 (код отмены) или Метода 2 (резервное копирование), так как они наиболее безопасны. Если они не помогают, переходите к очистке файлов блокировок и кэша. Помните, что перед любыми манипуляциями с файлами (удаление .1cl или запуск chdbfl) обязательно сделайте копию файла 1Cv8.1CD простым копированием в другую папку.

← На главную