При попытке обновить информационную базу 1С (особенно если в неё ранее вносились доработки и она находится на поддержке с возможностью изменения) на этапе сравнения и объединения конфигураций может возникнуть критическая ошибка: «Нарушена целостность структуры конфигурации». При этом стандартные средства диагностики, такие как утилита chdbfl.exe, тестирование и исправление через Конфигуратор или выгрузка/загрузка базы через .dt, не показывают ошибок и не решают проблему.
Разберем причины возникновения данной ошибки и рассмотрим пошаговый алгоритм её гарантированного устранения с сохранением всех пользовательских доработок и накопленных данных.
Проанализируем ситуацию: в информационной базе 1С физически хранятся три состояния конфигурации:
Ошибка чаще всего вызвана повреждением внутренних таблиц и BLOB-потоков метаданных именно конфигурации поставщика (служебные таблицы Config, ConfigSave или Params). Повреждение может быть следствием некорректно завершенных динамических обновлений, сбоев сети или накопленных ошибок в сериализации внутренних объектов.
Штатная утилита chdbfl.exe проверяет только физическую целостность страниц файла 1Cv8.1CD (заголовки, длины блоков, индексы), а тестирование и исправление анализирует ссылочную целостность прикладных данных. Ни один из этих инструментов не проверяет логическую непротиворечивость упакованных данных конфигурации поставщика. Выгрузка в файл .dt переносит битые служебные таблицы «как есть», поэтому развертывание выгрузки на чистой базе также не устраняет проблему.
Поскольку механизм обновления аварийно завершается именно на этапе сопоставления новой конфигурации поставщика со старой поврежденной, выполним процедуру принудительной перезаписи конфигурации поставщика через команду полной загрузки конфигурации. При загрузке операция сравнения не выполняется, что позволяет полностью перезаписать поврежденную структуру.
Разберем по шагам правильный порядок действий:
1Cv8.1CD (для файловой базы) или бэкап средствами СУБД (для клиент-серверного варианта). Все дальнейшие действия выполняются только при наличии резервной копии.CurrentModified.cf). Этот файл содержит все ваши изменения..cfu), создаем пустую временную базу, разворачиваем в ней нужный релиз и выгружаем чистый .cf поставщика (назовем его VendorClean.cf).VendorClean.cf. Соглашаемся с предупреждением о полной замене конфигурации.%LocalAppData%\1C\1Cv8 и %AppData%\1C\1Cv8), чтобы интерфейс корректно отобразил статус поддержки. Далее переходим в меню Конфигурация — Поддержка — Настройка поддержки и нажимаем кнопку Включить возможность изменения.CurrentModified.cf. В окне сравнения и объединения отмечаем все доработанные объекты. Нажимаем Выполнить.В результате мы получаем полностью восстановленную, небитую конфигурацию поставщика с сохраненными доработками основной конфигурации. После этого штатное обновление на следующий релиз пройдет без ошибок.
Если ошибка сохраняется или Конфигуратор не позволяет загрузить файл конфигурации, рассмотрим дополнительные методы нормализации структуры базы:
/DumpConfigToFiles), после чего загружаем полученные каталоги в чистую информационную базу с помощью команды /LoadConfigFromFiles.
TRUNCATE TABLE ConfigSave;
DELETE FROM Config WHERE [FileName] LIKE '%DynamicallyUpdated%';
DELETE FROM Params WHERE [FileName] LIKE '%DynamicallyUpdated%';
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
Полученная база становится полностью самостоятельной с «вылеченной» структурой метаданных.