В практике разработчика 1С иногда возникают ситуации, когда стандартные инструменты обслуживания базы данных перестают помогать. Одной из самых неприятных проблем является аварийное завершение работы Конфигуратора (вылет с дампом) при попытке обновить конфигурацию базы данных (нажатие клавиши F7). Особенно часто это происходит после внезапного отключения электропитания или системного сбоя в момент записи изменений. Чтобы минимизировать риск повреждения метаданных, можно настроить автоматическое архивирование и тестирование баз 1С в «тихом» режиме.
В данной статье мы подробно разберем, почему возникает такая ошибка, как проанализировать причины падения платформы и какие шаги предпринять для восстановления работоспособности базы, если стандартное Тестирование и Исправление (ТиИ) не дает результатов.
Рассмотрим сценарий: в процессе внесения изменений в конфигурацию произошло аварийное выключение компьютера. После перезагрузки при попытке применить изменения (F7) платформа 1С закрывается с критической ошибкой. При этом база данных может открываться в режиме «Предприятие», выгружаться в файл .dt и даже проходить проверку физической целостности утилитой chdbfl.exe без обнаружения ошибок.
Проанализируем причину такого поведения. Основная проблема здесь кроется не в данных пользователей, а в нарушении логической целостности метаданных. В момент сбоя запись в системную таблицу Config (где хранится описание объектов в формате XML) могла завершиться частично. В итоге возникает рассинхронизация: конфигурация «знает», что объект должен быть изменен, но физическая структура таблиц в базе данных (в файле 1Cv8.1CD или на SQL-сервере) не соответствует этому описанию.
Выясним, на каком этапе происходит сбой. Конфигуратор падает в момент сравнения основной конфигурации и конфигурации базы данных. Если в метаданных присутствует «битая» ссылка на объект, которого не существует, или описание типа данных стало некорректным, механизм SDBL (Simple Data Base Layer) не может построить корректный запрос к базе и аварийно завершает процесс.
Многие разработчики путают «Тестирование и исправление» (ТиИ) и «Проверку конфигурации». Разберем важное различие: ТиИ проверяет данные внутри таблиц (битые ссылки в документах, справочниках), а «Проверка конфигурации» анализирует логику самих объектов метаданных. В нашем случае именно второй инструмент является ключевым.
Для диагностики выполним следующие действия:
Проанализируем возможный отчет об ошибках. Часто система выдает сообщения следующего вида:
ПланВидовХарактеристик.ВидыСвойствНоменклатуры.ДополнительныеЗначенияХарактеристик: Неразрешимые ссылки на объекты метаданных
Это прямой указатель на то, что объект ПланВидовХарактеристик ссылается на тип данных или другой объект, который был удален или поврежден в процессе сбоя.
Как показывает практика, именно Планы видов характеристик чаще всего становятся причиной ошибки SDBL: Ссылка на таблицу Chrc... недопустима. Это связано со сложной структурой ПВХ, который оперирует составными типами данных.
Рассмотрим, как исправить поврежденный объект метаданных вручную:
ВидыСвойствНоменклатуры).После этих манипуляций платформа принудительно перезапишет XML-описание объекта в таблице Config, устранив логическую несогласованность. Теперь попробуем снова выполнить обновление конфигурации базы данных (F7).
Посмотрим глубже на техническую сторону вопроса. Ошибка SDBL (Simple Data Base Layer) с упоминанием таблицы Chrc (от англ. Characteristic) означает, что уровень доступа к данным не находит служебных индексов или полей в физической таблице ПВХ. Одним из важнейших полей является RefSelf — это системный идентификатор, обеспечивающий ссылочную целостность внутри таблицы метаданных.
Если компьютер выключился в момент реструктуризации, могла возникнуть ситуация «незавершенной транзакции на уровне СУБД». Конфигуратор видит новое описание объекта, но физическая таблица Chrc109 (число может быть любым) еще не создана или имеет старую структуру. Перевыбор типов в Конфигураторе инициирует повторный цикл реструктуризации, который исправляет это несоответствие. Для сопоставления физических имен таблиц СУБД с объектами конфигурации можно использовать отчет по структуре хранения базы данных 1С.
Если «Проверка конфигурации» не выявила ошибок, а вылет продолжается, проанализируем дополнительные методы восстановления, которые помогают в более тяжелых случаях.
Метод выгрузки в XML-файлы
Начиная с версии платформы 8.3, появился мощный инструмент — выгрузка конфигурации в файлы. Рассмотрим этот алгоритм:
Этот метод часто помогает избавиться от «фантомных» объектов в системных таблицах, которые не видны в дереве метаданных, но вызывают падение SDBL. Для выборочного экспорта отдельных объектов конфигурации можно использовать обработку для частичной выгрузки метаданных в файлы.
Очистка кэша конфигуратора
Иногда причина кроется в локальном кэше на компьютере разработчика. Выясним, как правильно его очистить. Недостаточно просто удалить базу из списка. Необходимо:
%AppData%\1C\1Cv8 и %LocalAppData%\1C\1Cv8.snccntx в каталоге кластера 1С), однако делать это нужно при остановленной службе сервера 1С.
Разберем, как обезопасить себя от подобных проблем в будущем. Поскольку основной причиной является внезапное прерывание записи метаданных, следует придерживаться нескольких правил:
.dt или копию файла .1CD.SDBL стали более устойчивыми к сбоям, а процессы реструктуризации — более надежными.Подведем итог: если Конфигуратор падает при обновлении, не паникуйте. В большинстве случаев проблема решается через Проверку конфигурации и исправление типов в Планах видов характеристик. Эти действия позволяют восстановить логическую структуру метаданных и успешно завершить обновление базы данных.