Ситуация, когда Конфигуратор аварийно завершает работу с сообщением «Структура разрушена», но при этом пользователи спокойно продолжают работать в режиме 1С:Предприятие, является классическим признаком рассинхронизации конфигурации разработчика (основной конфигурации) и конфигурации базы данных.
Проанализируем природу этой ошибки и разберем по шагам, как безопасно восстановить доступ к разработке без потери пользовательских данных.
В информационной базе на платформе 1С метаданные хранятся в нескольких системных таблицах СУБД:
Config) — это скомпилированная рабочая версия, с которой непосредственно взаимодействуют пользовательские сеансы. Если сбой произошел до завершения реструктуризации, эта таблица остается нетронутой, поэтому пользователи не замечают проблем.ConfigSave, ConfigCAS, ConfigCngR, ConfigCngR_ExtProps) — хранит промежуточные изменения, черновики и инкрементальные дельты обновлений.Если во время сохранения или реструктуризации метаданных (например, при добавлении новых реквизитов в документы) процесс был прерван аварийно (падение рабочего процесса rphost, потеря связи с СУБД, принудительное завершение), таблицы черновиков и версионирования оказываются поврежденными или содержат незавершенные транзакции. При попытке открыть Конфигуратор платформа пытается прочитать дельты изменений из ConfigCngR или ConfigSave и падает с ошибкой разрушенной структуры.
Прежде чем приступать к любым исправлениям, выполним обязательные действия:
1С:Предприятие 8.3.Иногда поврежденные структуры кэшируются на уровне рабочих процессов сервера 1С или клиентского приложения. Разберем процедуру полной очистки:
%LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8).1C:Enterprise Server Agent).srvinfo) очистим временные файлы контекстов сеансов (папки и файлы вида snccntx*).Если рабочая конфигурация в таблице Config не повреждена, приведем конфигурацию разработчика в полное соответствие с рабочей версией базы данных напрямую через SQL Server Management Studio (или консоль вашей СУБД):
DELETE FROM ConfigSave;
DELETE FROM ConfigCngR;
DELETE FROM ConfigCngR_ExtProps;
ConfigCAS и ConfigCAS_orig, их содержимое также следует очистить.Config в ConfigSave:
INSERT INTO ConfigSave SELECT * FROM Config;
PARAMS на наличие зависших маркеров блокировки и обновлений (таких как DBStrd или DynamicCommit). При их наличии очистим соответствующие записи.После выполнения этих запросов Конфигуратор сможет успешно открыться, так как конфигурация разработчика станет идентична рабочей конфигурации базы данных.
Если графический интерфейс Конфигуратора не открывается, попробуем выполнить сброс несохраненных изменений конфигурации разработчика средствами пакетного запуска платформы с ключом /RollbackCfg:
"C:\Program Files\1cv8\8.3.X.X\bin\1cv8.exe" DESIGNER /S "ИмяСервера\ИмяБазы" /N "Администратор" /P "Пароль" /RollbackCfg
Параметр /RollbackCfg отменяет все изменения основной конфигурации и синхронизирует её с конфигурацией базы данных.
Если после синхронизации таблиц возникают сопутствующие ошибки проверки метаданных, запустим тестирование информационной базы в командном режиме:
"C:\Program Files\1cv8\8.3.X.X\bin\1cv8.exe" DESIGNER /S "ИмяСервера\ИмяБазы" /N "Администратор" /P "Пароль" /IBCheckAndRepair -CheckMetadata -ReIndex -RebuildTableIndexes
Ключ -CheckMetadata выполняет проверку логической целостности структуры метаданных и исправляет поврежденные внутренние ссылки.
Если удалось войти в Конфигуратор без открытия дерева метаданных (например, в свернутом режиме после чистки кэша):
.cf)..cf.F7 (или через меню Конфигурация → Обновить конфигурацию базы данных).После восстановления доступа к Конфигуратору заново внесем доработки (добавление реквизитов) в монопольном режиме и штатно завершим обновление информационной базы.