При работе с конфигурацией «1С:Управление торговлей» версии 11.3 (и другими решениями на базе Библиотеки стандартных подсистем — БСП) специалисты часто сталкиваются со сбоями при попытке развернуть или обновить измененную конфигурацию на пустой базе данных. Типичный сценарий выглядит следующим образом: создается новая чистая база данных, в нее загружается доработанная конфигурация из файла (.cf), запускается процесс обновления информационной базы, однако система аварийно прерывает операцию.
В журнале регистрации при этом фиксируется критическая ошибка следующего вида:
При вызове обработчика обновления: "ОбработкаНовостей.ОбновлениеИнформационнойБазы_ОбщиеДанные_ПерейтиНаВерсию" произошла ошибка:
{ОбщийМодуль.РегламентныеЗаданияСервер.Модуль(768)}: Регламентное задание не найдено. Возможно, оно удалено другим пользователем.
В этой статье мы подробно разберем, почему возникает данная проблема, как правильно настроить автоматическое подключение отладчика к фоновым заданиям в файловом режиме и изучим четыре эффективных способа успешного обхода или устранения этой ошибки.
Для начала проанализируем внутренние механизмы платформы «1С:Предприятие» и БСП, которые приводят к возникновению этой ошибки. При переходе на новую версию конфигурации запускаются специализированные обработчики обновления. Один из них — процедура ОбновлениеИнформационнойБазы_ОбщиеДанные_ПерейтиНаВерсию из общего модуля ОбработкаНовостей.
Основная задача этого обработчика — автоматическая перенастройка расписания регламентного задания, которое отвечает за скачивание актуальных новостных лент с серверов компании «1С» (речь идет о регламентном задании с именем ВсеОбновленияНовостей). Для этого программный код обращается к общему модулю управления регламентными заданиями:
РегламентноеЗадание = РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание(Метаданные.РегламентныеЗадания.ВсеОбновленияНовостей);
Если этот метод возвращает значение Неопределено, то срабатывает защитный алгоритм БСП в модуле РегламентныеЗаданияСервер, генерирующий исключение, которое полностью блокирует дальнейшее обновление базы данных.
Существует две основные причины, почему это задание не удается найти в базе данных:
ВсеОбновленияНовостей был удален из ветки «Общие -> Регламентные задания», но программный код обработчиков обновления остался прежним, при запуске неизбежно возникнет сбой.Чтобы детально изучить проблему и понять, на каком именно этапе и какое именно задание вызывает ошибку, нам понадобится отладчик. Однако в файловом режиме стандартные точки останова в коде регламентных или фоновых заданий могут не срабатывать. Настроим автоматическое подключение отладчика по шагам:
Теперь при запуске сеанса обновления отладчик будет автоматически перехватывать выполнение фоновых процессов, и вы сможете пошагово пройти код общего модуля РегламентныеЗаданияСервер, чтобы увидеть, какой именно объект вызывает исключение.
Это наиболее корректный и безопасный метод, который позволяет избежать ошибок инициализации предопределенных объектов в чистой базе. Рассмотрим этот алгоритм по шагам:
.cf).Если в процессе доработки конфигурации объект метаданных был физически удален, нам потребуется вернуть его на место. Выполните следующие действия:
ВсеОбновленияНовостей.Если вам нужно срочно запустить базу и вы уверены, что функционал автоматического обновления новостей от «1С» вам не потребуется, можно временно обойти проверку в коде конфигурации. Проанализируем, как это сделать:
РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание().Неопределено:
Если РегламентноеЗадание = Неопределено Тогда
ВызватьИсключение( НСтр("ru = 'Регламентное задание не найдено. Возможно, оно удалено другим пользователем.'") );
КонецЕсли;
Временно модифицируйте этот участок кода следующим образом, закомментировав вызов исключения:
Если РегламентноеЗадание = Неопределено Тогда
// ВызватьИсключение( НСтр("ru = 'Регламентное задание не найдено.'") );
Возврат Неопределено;
КонецЕсли;
После этого запустите обновление информационной базы. Когда процесс успешно завершится, вы сможете вернуть исходный код модуля в первоначальное состояние, чтобы сохранить поддержку конфигурации.
Еще один профессиональный способ — полностью исключить регистрацию сбойного обработчика обновления новостей в системе БСП. Для этого выполните следующие действия:
ОбновлениеИнформационнойБазыБИП или аналогичные).ПриДобавленииОбработчиковУстановкиОбновлений.ОбработкаНовостей.ОбновлениеИнформационнойБазы_ОбщиеДанные_ПерейтиНаВерсию.Таким образом, при старте обновления конфигурация просто пропустит шаг работы с новостными регламентными заданиями, избавив вас от необходимости править низкоуровневые механизмы БСП.