В процессе администрирования или разработки в среде 1С:Предприятие часто возникает необходимость заглянуть «под капот» информационной базы. Это может быть связано как с обычным любопытством, так и с серьезными техническими сбоями, когда штатные средства конфигуратора не дают ответа на вопрос, почему база ведет себя некорректно. В данной статье мы подробно разберем, как сопоставить физические имена таблиц (типа _InfoReg123) с привычными объектами метаданных, а также проанализируем методику исправления специфической ошибки «Поле объекта не обнаружено (НомерСеанса)», часто возникающей при обновлении крупных конфигураций, таких как ЗУП 3.1.
Самый надежный и правильный метод, предусмотренный разработчиками платформы — это программное получение структуры. Функция ПолучитьСтруктуруХраненияБазыДанных() возвращает таблицу значений, в которой четко прописано, какой объект метаданных какой таблице в СУБД (или в файле .1CD) соответствует.
Проанализируем пример кода, который позволит нам вывести эти данные в удобном виде:
СтруктураБД = ПолучитьСтруктуруХраненияБазыДанных();
Для Каждого СтрокаСтруктуры Из СтруктураБД Цикл
Сообщить("Объект: " + СтрокаСтруктуры.ИмяМетаданных + " -> Таблица: " + СтрокаСтруктуры.ИмяТаблицыХранения);
КонецЦикла;
Преимущества этого метода:
Если нам требуется более наглядный интерфейс или база повреждена настолько, что конфигуратор не открывается, мы можем воспользоваться сторонними инструментами. Рассмотрим наиболее популярные из них:
1Cv8.1CD напрямую и увидеть список всех таблиц. Однако, как верно заметил автор темы, сама утилита не всегда наглядно показывает связь с метаданными. Для этого нужно заглядывать в системную таблицу Config, где хранятся описания объектов в бинарном виде.ПолучитьСтруктуруХраненияБазыДанных() в виде удобного дерева или таблицы с возможностью поиска и фильтрации.Рассмотрим ситуацию, когда после обновления (например, ЗУП до версии 3.1.6.38) система начинает выдавать ошибку отсутствия поля НомерСеанса. Это часто происходит в модуле менеджера справочника ВерсииРасширений. Разберем по шагам, почему это случается и как это лечить.
Причина кроется в механизме расширений и системных таблиц. Платформа 1С хранит служебную информацию о сеансах в специальных полях, которые могут «потеряться» или не создаться вовремя при некорректной реструктуризации. Выясним основные пути решения.
Одним из самых эффективных методов решения проблем «сдвинутых» или отсутствующих полей является принудительная активация нового механизма обновления конфигурации. Для этого нам необходимо создать или отредактировать файл conf.cfg, который обычно находится в папке C:\Program Files\1cv8\conf.
Добавим в него следующие параметры:
DBFormatVersion=8.3.8
UpdateDBCfg=v2
Разберем назначение этих строк:
UpdateDBCfg=v2 — включает вторую версию механизма обновления базы данных. В этом режиме платформа выполняет реструктуризацию через создание временных таблиц, что значительно снижает риск появления «битых» ссылок и отсутствующих полей.DBFormatVersion=8.3.8 — переводит файловую базу на современный формат хранения, который поддерживает файлы размером более 4 ГБ и имеет более устойчивую структуру индексов.После внесения изменений рекомендуется выгрузить базу в .dt файл и загрузить ее в новую пустую базу.
Часто проблема «Поле объекта не обнаружено» является ложной и вызвана кэшированием старой структуры метаданных на стороне сервера или клиента. Выполним следующие действия:
%AppData%\1C\1cv8 и %LocalAppData%\1C\1cv8. Это заставит платформу заново считать структуру объектов из базы при запуске..cf), затем снимите конфигурацию с поддержки, удалите проблемный объект (если это возможно на копии) и загрузите .cf обратно.Важный совет: Перед любыми манипуляциями с файлом conf.cfg или прямым редактированием таблиц всегда создавайте резервную копию. Если база файловая, достаточно просто скопировать файл 1Cv8.1CD в безопасное место.
Проанализировав ситуацию, мы видим, что проблема «сдвига» регистров — это чаще всего следствие прерванного или некорректного процесса реструктуризации при обновлении. Использование UpdateDBCfg=v2 в сочетании с полной очисткой кэша позволяет платформе корректно пересоздать необходимые служебные поля, такие как НомерСеанса, и восстановить работоспособность системы.