При переходе на релиз 3.0.107.34 в конфигурации «Бухгалтерия предприятия» многие специалисты сталкиваются с критической остановкой процесса обновления. Ошибка обычно возникает на этапе выполнения обработчиков обновления (часто на отметке 11%), когда система пытается выполнить регистрацию изменений для автономной работы. Рассмотрим подробно причины возникновения этой ситуации и разберем по шагам проверенные методы её устранения.
Судя по стеку вызовов, предоставленному в сообщении, проблема локализована в общем модуле ОбменДаннымиСервер, в процедуре ЗаполнитьЗначенияСвойствДляТаблицыЗначений. Выясним причину: система пытается обратиться к свойству "ПравилаВыборочнойРегистрацииОбъектов" в структуре СтруктураПравилОбмена, но этого ключа в структуре не оказывается, либо сама структура не инициализирована должным образом. Это происходит из-за конфликта старых данных в кэше правил обмена и обновленных механизмов Библиотеки стандартных подсистем (БСП), которые вошли в состав 107-го релиза.
Даже если в вашей базе никогда не настраивалась синхронизация данных, план обмена АвтономнаяРабота присутствует в метаданных и может содержать системные записи или узлы для мобильных приложений, которые инициализируют механизмы регистрации изменений автоматически.
Наиболее эффективным и безопасным методом, предложенным в ходе обсуждения, является полная очистка кэшированных правил. Эти правила будут автоматически пересозданы системой при следующем запуске или при продолжении обновления.
Рассмотрим порядок действий для очистки регистра:
/AllowExecuteScheduledJobs -Force или попробуйте зайти через «Функции для технического специалиста», если окно обновления еще позволяет это сделать).Если записей много и ручное удаление затруднено, можно воспользоваться внешней обработкой, в которой программно выполнить следующий код:
НаборЗаписей = РегистрыСведений.ПравилаДляОбменаДанными.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
Проанализируем ситуацию с планами обмена. Иногда ошибка вызвана тем, что в системе существуют «битые» узлы автономной работы. Проделаем следующие шаги:
Если очистка регистров не помогла, разберем вариант с внесением правок в программный код. Поскольку конфигурация автора уже снята с поддержки, можно внести изменения непосредственно, либо (что более правильно) использовать расширение.
Посмотрим на пример исправления в модуле ОбменДаннымиСервер:
Необходимо найти строку 8536 (в релизе 3.0.107.34) и обернуть вызов процедуры в блок Попытка...Исключение. Это позволит пропустить шаг регистрации изменений, который не является критичным для процесса обновления метаданных.
Попытка
ЗаполнитьЗначенияСвойствДляТаблицыЗначений(ПравилаВыборочнойРегистрацииОбъектов, СтруктураПравилОбмена["ПравилаВыборочнойРегистрацииОбъектов"]);
Исключение
// Запись лога в Журнал регистрации, если необходимо
ЗаписьЖурналаРегистрации("Обновление.ОшибкаРегистрации", УровеньЖурналаРегистрации.Предупреждение,,, "Пропущена регистрация правил");
КонецПопытки;
После успешного завершения обновления эту правку рекомендуется удалить, чтобы не маскировать возможные проблемы в будущем.
Выясним причину, связанную с окружением. Релиз 3.0.107 предъявляет повышенные требования к версии технологической платформы. Проверьте, чтобы ваша версия была не ниже 8.3.17.2306, 8.3.18.1741 или 8.3.19.1467.
Рассмотрим дополнительные действия по очистке кэша:
srvinfo/reg_1541/snccnt... (сеансовые данные и кэш).Проанализируем также регистр Безопасное хранилище данных. Иногда в нем хранятся устаревшие настройки транспорта сообщений обмена, которые мешают корректной инициализации структуры ПравилаВыборочнойРегистрацииОбъектов. Если вы точно знаете, что синхронизация не используется, очистка этого регистра (с фильтром по владельцу, относящемуся к планам обмена) также может помочь продвинуться дальше 11% прогресса обновления.
Используя комплексный подход — от очистки регистров до временной модификации кода — вы сможете успешно завершить обновление «1С:Бухгалтерии» до актуального релиза и восстановить работоспособность системы.