В процессе эксплуатации и обновления нетиповых конфигураций «1С:Бухгалтерия предприятия КОРП 3.0» системные администраторы и программисты иногда сталкиваются с критической ошибкой «Нарушена целостность конфигурации». Эта проблема особенно коварна тем, что стандартные средства диагностики, такие как «Тестирование и исправление» (ТиИ) или очистка кэша, часто оказываются бессильны. Ситуация усугубляется, если ошибка возникла после некорректных действий пользователя (например, прерывание процесса обновления или запуск обновления из пользовательского режима в обход конфигуратора).
В данной статье мы подробно разберем, почему возникает эта ошибка и рассмотрим пошаговые алгоритмы её устранения — от простых манипуляций в конфигураторе до глубокого восстановления на уровне SQL-сервера.
Прежде чем приступать к активным действиям, проанализируем ситуацию. Ошибка целостности означает, что бинарный образ конфигурации в базе данных (хранящийся в таблице Config) перестал соответствовать логической структуре метаданных. В рассматриваемом нами случае триггером послужило нажатие пользователем кнопки «Обновить конфигурацию» непосредственно в пользовательском интерфейсе. Это запускает механизм фонового обновления, который при наличии расширений или специфических доработок может привести к конфликту блокировок и повреждению внутренних таблиц метаданных.
Рассмотрим поэтапно методы решения, начиная с наиболее успешного в практике специалистов.
Если база данных «живая» (пользователи могут работать), но не дает выполнить обновление, попробуем обновить саму структуру метаданных, заменив её на заведомо исправную. Это основной метод, который помог автору вопроса.
.dt.3.0.137.39)..cf. Важно использовать именно «Загрузить», а не «Сравнить/объединить», чтобы полностью перезаписать структуру таблиц метаданных.F7 для обновления конфигурации базы данных. Если процедура прошла успешно, мы восстановили целостность. Далее можно снова поставить базу на поддержку, выбрав «Сравнить/объединить с конфигурацией поставщика».Если стандартный .cf не помогает или база выдает ошибку при попытке сохранения, проанализируем состояние метаданных через выгрузку в файлы. Этот метод позволяет платформе заново пересобрать бинарный образ из текстовых описаний.
Рассмотрим этот процесс по шагам:
F7) и выгружаем её в обычный файл .cf.Полученный таким образом файл часто является «очищенным» от бинарного мусора и ошибок, накопленных в исходной базе. Попробуйте загрузить его в проблемную базу методом, описанным в первом решении.
Для серверных баз данных (MS SQL, PostgreSQL) причина часто кроется в «зависших» временных записях в системных таблицах 1С. Если база считает, что обновление еще идет или оно было завершено аварийно, она будет блокировать любые изменения.
Проанализируем ситуацию с помощью SQL-запросов. Внимание: данные действия выполняются только после создания бэкапа и при полной уверенности в своих действиях.
Посмотрим, нет ли в таблице Config записей, блокирующих обновление:
SELECT * FROM Config WHERE FileName LIKE '%commit%'
OR FileName LIKE '%db_copy_check%'
Если такие записи найдены, их можно аккуратно удалить:
DELETE FROM Config WHERE FileName LIKE '%commit%'
Также полезно очистить таблицу ConfigSave, в которой хранятся промежуточные (несохраненные) изменения конфигурации:
TRUNCATE TABLE ConfigSave
После очистки этой таблицы при открытии конфигуратора вы увидите состояние «как после последнего успешного обновления», что может снять блокировку целостности.
Разберем ситуацию, когда в базе установлены расширения. В версии платформы 8.3.23 и выше механизмы контроля целостности стали строже. Если у расширения установлен режим совместимости, отличный от режима совместимости основной конфигурации, это может вызывать ошибки при реструктуризации.
Проверим следующие моменты:
Режим совместимости, как в основной базе.Если база серверная, но не загружается даже в файловом варианте, попробуем методы низкоуровневой диагностики:
.dt и загрузите её в файловый вариант (даже если загрузка проходит с ошибкой, попробуйте довести её до конца).chdbfl.exe (находится в папке bin платформы). Установите флаг «Исправлять обнаруженные ошибки».Tool_1CD. Она позволяет открыть файл 1Cv8.1CD и увидеть, на какой именно записи в таблице Config происходит сбой. Если вы увидите «битый» блок (например, общий модуль с нулевым размером), это укажет на конкретное место повреждения.В практике работы с релизом 8.3.23.1865 зафиксированы случаи некорректной обработки памяти при обновлении крупных конфигураций, таких как БП КОРП. Попробуйте выполнить обновление на более стабильных ветках:
8.3.22.8.3.24 / 8.3.25.Иногда простая смена разрядности сервера (с x86 на x64) или обновление версии платформы позволяет алгоритмам реструктуризации корректно обработать поврежденные участки без ручного вмешательства в таблицы.
Заключение: Ошибка целостности конфигурации — это не приговор для базы данных. В большинстве случаев она лечится путем «перезаливки» метаданных из чистого CF-файла или очистки временных таблиц в SQL. Главное — всегда иметь актуальный бэкап и последовательно проверять каждый из предложенных методов, двигаясь от простых инструментов платформы к прямым запросам к базе данных.