Как исправить ошибку при обновлении 1С:Бухгалтерия предприятия 3.0, связанную с подсистемой новостей

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

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

Выясним причину возникновения ошибки

Проанализируем ситуацию: при переходе с релиза (например, 3.0.71.75) на более свежий (3.0.72.54) программа выполняет реструктуризацию таблиц и запускает отложенные обработчики обновления. Ошибка часто кроется в подсистеме новостей, которая является частью БСП (Библиотеки стандартных подсистем). Проблема заключается в том, что в регистре сведений, отвечающем за интервалы версий новостей, появляются записи с пустыми значениями в ключевых полях — «Версия ОТ» и «Версия ДО».

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

Способ 1: Использование режима «Толстого клиента» для очистки данных

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

  1. Откроем Конфигуратор вашей информационной базы.
  2. Перейдем в меню «Сервис» — «Параметры».
  3. На вкладке «Запуск 1С:Предприятия» найдем раздел «Основные».
  4. Установим переключатель «Вид запуска» в положение «Толстый клиент (обычное приложение)». Нажмем «ОК».
  5. Запустим систему в режиме отладки или просто через F5.
  6. В открывшемся окне (оно будет выглядеть как старый интерфейс 1С 8.2) перейдем в меню «Операции» — «Регистры сведений».
  7. Найдем в списке регистр Категории новостей (интервалы версий, необработанные). В некоторых версиях он может называться КатегорииНовостейИнтервалыВерсий.
  8. Проанализируем содержимое: ищем записи, где поля версий не заполнены или содержат некорректные символы. Удалим эти записи.
  9. Закроем клиентское приложение.
  10. Вернемся в Конфигуратор и установим в параметрах запуска вид «Выбрать автоматически».

После этих действий запустим обновление снова. Система должна успешно пропустить проблемный этап и завершить обработку данных.

Способ 2: Очистка связанных регистров через Tool1CD (для файловых баз)

Если база файловая и зайти в нее в режиме предприятия не удается даже в режиме толстого клиента, разберем альтернативный вариант с использованием внешних утилит. Проанализируем возможность прямой правки файла 1Cv8.1CD.

Существуют инструменты, такие как Tool1CD, которые позволяют просматривать структуру таблиц файловой базы напрямую. Нам необходимо найти таблицы, соответствующие регистрам новостей. Обычно они имеют префикс _InfoRg. Будьте предельно осторожны при использовании данного метода и обязательно сделайте резервную копию файла базы перед началом работ.

Специалисты рекомендуют очистить (полностью удалить записи) в следующих регистрах, так как они автоматически перезаполнятся актуальными данными при успешном запуске:

Способ 3: Программное отключение подсистемы новостей

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

В некоторых случаях помогает временная вставка кода, отключающего использование новостей. Рассмотрим пример кода, который можно временно разместить в общем модуле или процедуре обновления:


// Временное отключение новостей для прохождения обновления
Если Метаданные.ОбщиеМодули.Найти("НовостнаяСистема") <> Неопределено Тогда
    // Имя метода может отличаться в разных версиях БСП
    // НовостнаяСистема.УстановитьИспользованиеНовостей(Ложь);
КонецЕсли;

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

Профилактика и выбор платформы

Разберем, почему версия платформы имеет значение. В сообщениях упоминается использование 8.3.12.1714. На практике версии ниже 8.3.15 часто имели проблемы с распределением памяти при обновлении «тяжелых» конфигураций, таких как БП 3.0. Посмотрим на рекомендации: для корректной работы современных релизов БП 3.0 (начиная с 3.0.72 и выше) крайне желательно использовать платформу не ниже 8.3.15.1830 или актуальные сборки 8.3.18/8.3.21+.

Также, чтобы проблема не повторилась, выполним следующие настройки в пользовательском режиме после успешного входа:

  1. Перейдем в раздел «Администрирование» — «Интернет-поддержка и сервисы».
  2. Найдем настройки «Новости».
  3. Отключим автоматическое обновление новостей или настроим его по расписанию в нерабочее время. Это предотвратит внезапное появление некорректных записей в кэше, которые могут помешать следующему обновлению конфигурации.

Резюме

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

← На главную