При активной командной разработке в среде 1С разработчики нередко сталкиваются с ситуацией: база данных успешно разворачивается из резервной копии, подключается к хранилищу конфигурации, но при попытке получить обновления и обновить конфигурацию базы данных процесс прерывается критической ошибкой «Нарушена целостность структуры». Проанализируем причины возникновения этой проблемы и разберем пошаговые методы ее гарантированного устранения.
Выясним основные причины сбоя:
ConfigSave, Config).Рассмотрим самый простой и быстрый способ, который позволяет выровнять внутреннюю структуру метаданных базы без прямого вмешательства в СУБД. Этот метод доказал свою эффективность в ситуациях, когда база автономно работает стабильно, а сбой происходит исключительно в момент фиксации изменений из хранилища.
Разберем по шагам последовательность действий:
F7).F7 для обновления базы данных. В этот момент платформа запускает полную реструктуризацию и приводит внутренние таблицы описания структуры к согласованному виду.Если ошибка вызвана сбоем при предыдущей загрузке обновления или аварийным завершением процесса фонового обновления, в таблице ConfigSave могут оставаться некорректные временные данные. Посмотрим, как очистить служебные таблицы на уровне СУБД.
Для сброса незафиксированного состояния конфигурации выполним скрипт в среде SQL Server Management Studio:
USE [ИмяБазыДанных]
GO
DELETE FROM [dbo].[ConfigSave]
GO
Если таблица ConfigSave пуста, но ошибка сохраняется, проверим таблицу Config на наличие зависших блокировок транзакций и удалим их:
USE [ИмяБазыДанных]
GO
DELETE FROM [dbo].[Config] WHERE [FileName] = 'commit'
GO
DELETE FROM [dbo].[Config] WHERE [FileName] = 'dbStruFinal'
GO
Если требуется экстренно отвязать базу от хранилища прямо на уровне SQL (когда Конфигуратор не открывается), выполним запрос на удаление настроек хранилища из таблицы файлов:
USE [ИмяБазыДанных]
GO
DELETE FROM [dbo].[Files] WHERE [FileName] LIKE '%depot%'
GO
В тяжелых случаях, когда структура основной таблицы Config повреждена и не дает запустить Конфигуратор для чтения дерева объектов, разберем методику восстановления метаданных из резервной копии:
1C:Enterprise Server Agent и очищаем локальный кэш конфигуратора (каталоги %AppData%\1C\1Cv8 и %LocalAppData%\1C\1Cv8).DB_Restore), созданную до возникновения проблемы.DB_Work) очищаем поврежденную таблицу Config и перезаписываем ее содержимым из рабочей резервной копии:
USE [DB_Work]
GO
DELETE FROM [dbo].[Config]
GO
INSERT INTO [DB_Work].[dbo].[Config]
SELECT * FROM [DB_Restore].[dbo].[Config]
GO
F7).Поскольку хранилище конфигурации физически представляет собой файл с расширением .1cd, в нем также могут возникать физические нарушения целостности таблиц. Проанализируем действия по обслуживанию самого хранилища:
chdbfl.exe (находится в каталоге bin установленной платформы 1С)./DepotDumpCfg с указанием номера ревизии.Если накатить обновление целиком не удается, выясним, на каком конкретно объекте возникает сбой структуры:
F7.