При аварийных сбоях, некорректном динамическом обновлении или сбоях файловой системы встроенная утилита проверки chdbfl может обнаружить ошибки в таблице метаданных CONFIG. В процессе «исправления» утилита нередко просто удаляет битые страницы и блоки файла 1CD. В результате удаляются описания структуры конфигурации, нарушается целостность дерева метаданных, и информационная база перестает запускаться в режиме 1С:Предприятие и Конфигуратор.
Проанализируем причины возникновения этой проблемы, а также пошагово разберем методы восстановления работоспособности как для клиент-серверного (SQL), так и для файлового варианта информационной базы.
Выясним, почему именно таблица CONFIG подвержена сбоям:
1CD.Если база работает под управлением MS SQL Server, структура таблиц открыта для прямого доступа через SQL-запросы. Для восстановления метаданных потребуется копия базы (резервная копия или чистая база того же релиза).
Разберем список служебных таблиц, отвечающих за структуру конфигурации:
Config — основная конфигурация.ConfigSave — сохраняемая конфигурация разработчика.DBSchema — схема базы данных.Params — системные параметры и настройки информационной базы.Посмотрим на пример SQL-скрипта для переноса системных таблиц из базы-донора в поврежденную базу:
USE upp_target -- Имя поврежденной рабочей базы
GO
-- Очищаем системные таблицы в битой базе
TRUNCATE TABLE [dbo].[Config];
TRUNCATE TABLE [dbo].[ConfigSave];
TRUNCATE TABLE [dbo].[DBSchema];
TRUNCATE TABLE [dbo].[Params];
GO
-- Копируем данные из резервной копии (базы-донора)
INSERT INTO [dbo].[Config] SELECT * FROM [upp_backup].[dbo].[Config];
INSERT INTO [dbo].[DBSchema] SELECT * FROM [upp_backup].[dbo].[DBSchema];
INSERT INTO [dbo].[Params] SELECT * FROM [upp_backup].[dbo].[Params];
GO
После выполнения запроса необходимо запустить конфигуратор базы upp_target, внести незначительное изменение (например, в комментарий корня конфигурации) и нажать Обновить конфигурацию базы данных (F7).
В файловой версии базы данных таблицы упакованы внутрь единого файла 1Cv8.1CD. Выполнить SQL-запросы напрямую нельзя, однако можно воспользоваться специализированной утилитой низкоуровневого редактирования Tool_1CD (версией с поддержкой редактирования и импорта таблиц).
Рассмотрим порядок действий по шагам:
1Cv8.1CD перед любыми манипуляциями..cf того же релиза).Tool_1CD и поочередно экспортируем во внешние файлы таблицы: CONFIG, CONFIGSAVE, PARAMS, DBSCHEMA.Tool_1CD поврежденную базу данных, переходим к соответствующим таблицам и выполняем команду импорта (замены содержимого) ранее выгруженных файлов.Если таблицы метаданных были взяты из резервной копии другого релиза, при попытке открыть документы или выполнить операцию Тестирование и исправление платформа может выдать ошибку вида:
Ошибка SQL: Поле не найдено 'T1._Fld10678RRef'
Разберем причину ошибки: физическая таблица в базе содержит новые поля, добавленные недавними обновлениями, а подставленная старая конфигурация не содержит их описания в метаданных.
Для исправления ситуации используем следующий подход:
СтруктураБазы = ПолучитьСтруктуруХраненияБазыДанных();
ПроизвольныйЭД), можно аналогично импортировать описание этой таблицы из базы с нужной версией метаданных либо загрузить актуальный файл конфигурации .cf через Конфигуратор без выполнения реструктуризации.