При обновлении типовых конфигураций «1С:Предприятие», в частности «Бухгалтерия предприятия 3.0», пользователи часто сталкиваются с ситуацией, когда процесс прерывается критической ошибкой. Одной из наиболее коварных проблем является сбой при выполнении обработчиков обновления, работающих с классификаторами новостей. В этой статье мы подробно разберем, почему возникает эта ошибка и как восстановить работоспособность базы данных без отката к архивной копии.
Проанализируем ситуацию: при переходе с релиза (например, 3.0.71.75) на более свежий (3.0.72.54) программа выполняет реструктуризацию таблиц и запускает отложенные обработчики обновления. Ошибка часто кроется в подсистеме новостей, которая является частью БСП (Библиотеки стандартных подсистем). Проблема заключается в том, что в регистре сведений, отвечающем за интервалы версий новостей, появляются записи с пустыми значениями в ключевых полях — «Версия ОТ» и «Версия ДО».
Когда программный код пытается сравнить текущую версию конфигурации с этими пустыми значениями, возникает исключение, которое блокирует дальнейшее обновление. Стандартные средства, такие как chdbfl.exe или «Тестирование и исправление» в Конфигураторе, не всегда могут выявить логическую ошибку внутри записей регистра, так как физически таблица может быть исправна.
Рассмотрим основной метод решения, который помог автору темы. Этот способ позволяет получить доступ к тем регистрам, которые в обычном интерфейсе (управляемом приложении) могут быть скрыты или недоступны для прямого редактирования.
F5.Категории новостей (интервалы версий, необработанные). В некоторых версиях он может называться КатегорииНовостейИнтервалыВерсий.После этих действий запустим обновление снова. Система должна успешно пропустить проблемный этап и завершить обработку данных.
Если база файловая и зайти в нее в режиме предприятия не удается даже в режиме толстого клиента, разберем альтернативный вариант с использованием внешних утилит. Проанализируем возможность прямой правки файла 1Cv8.1CD.
Существуют инструменты, такие как Tool1CD, которые позволяют просматривать структуру таблиц файловой базы напрямую. Нам необходимо найти таблицы, соответствующие регистрам новостей. Обычно они имеют префикс _InfoRg. Будьте предельно осторожны при использовании данного метода и обязательно сделайте резервную копию файла базы перед началом работ.
Специалисты рекомендуют очистить (полностью удалить записи) в следующих регистрах, так как они автоматически перезаполнятся актуальными данными при успешном запуске:
ДатыОбновленияСтандартныхСписковНовостейНастройкиНовостейСостояниеНовостейКатегорииНовостейИнтервалыВерсийПосмотрим на ситуацию со стороны разработчика. Если база открывается в Конфигураторе, мы можем попробовать временно «заглушить» обращение к новостной системе, чтобы обновление завершилось. Для этого проанализируем модуль управляемого приложения или процедуру ПриНачалеРаботыСистемы.
В некоторых случаях помогает временная вставка кода, отключающего использование новостей. Рассмотрим пример кода, который можно временно разместить в общем модуле или процедуре обновления:
// Временное отключение новостей для прохождения обновления
Если Метаданные.ОбщиеМодули.Найти("НовостнаяСистема") <> Неопределено Тогда
// Имя метода может отличаться в разных версиях БСП
// НовостнаяСистема.УстановитьИспользованиеНовостей(Ложь);
КонецЕсли;
Важно: После успешного обновления этот код необходимо обязательно удалить, чтобы вернуть штатный функционал системы.
Разберем, почему версия платформы имеет значение. В сообщениях упоминается использование 8.3.12.1714. На практике версии ниже 8.3.15 часто имели проблемы с распределением памяти при обновлении «тяжелых» конфигураций, таких как БП 3.0. Посмотрим на рекомендации: для корректной работы современных релизов БП 3.0 (начиная с 3.0.72 и выше) крайне желательно использовать платформу не ниже 8.3.15.1830 или актуальные сборки 8.3.18/8.3.21+.
Также, чтобы проблема не повторилась, выполним следующие настройки в пользовательском режиме после успешного входа:
Мы проанализировали проблему и нашли, что основной причиной сбоя являются «битые» записи в регистрах сведений новостей. Решение заключается в физическом удалении этих записей через режим толстого клиента или прямой очистке таблиц. Помните, что перед любыми манипуляциями с таблицами базы данных необходимо иметь актуальную выгрузку .dt или копию файла 1Cv8.1CD. Совместное использование правильной версии платформы и чистка кэша новостей гарантируют стабильное обновление конфигурации.