При работе с крупными конфигурациями, такими как БП 3.0, у разработчиков часто возникает потребность понять, в какой именно таблице MS SQL Server хранятся данные конкретного справочника или документа. Платформа 1С:Предприятие скрывает физическую структуру БД, но предоставляет инструменты для получения этой информации. Рассмотрим, как это сделать правильно и безопасно.
Для получения структуры хранения в 1С существует недокументированная, но эффективная функция ПолучитьСтруктуруХраненияБазыДанных. Она позволяет сопоставить объекты метаданных с их именами в SQL-базе. Давайте разберем по шагам, как можно использовать эту функцию.
Для начала работы нам необходимо подготовить массив имен метаданных, которые мы хотим проанализировать. Рассмотрим пример кода:
МассивИменМетаданных = Новый Массив;
МассивИменМетаданных.Добавить("Справочник.Номенклатура");
МассивИменМетаданных.Добавить("Документ.РасходнаяНакладная");
СтруктБД = ПолучитьСтруктуруХраненияБазыДанных(МассивИменМетаданных);
После выполнения данного кода в переменной СтруктБД будет содержаться соответствие (тип Соответствие), где ключом выступает полное имя метаданного, а значением — структура с описанием физических таблиц.
Если ваша конфигурация работает на управляемых формах, доступ к функциям глобального контекста может быть ограничен. В таких случаях мы можем применить следующие подходы:
/RunModeOrdinaryApplication. В режиме «толстого клиента» можно открыть «Табло», ввести там ПолучитьСтруктуруХраненияБазыДанных.Показать и получить результат в удобном окне.При анализе структуры БД важно помнить об особенностях MS SQL Server и логике работы 1С:
_Reference12345) могут меняться при выполнении реструктуризации базы данных или изменении метаданных.DELETE или UPDATE напрямую в таблицах SQL, если вы не обладаете глубокими знаниями о внутренней структуре базы. Прямое удаление данных нарушает ссылочную целостность, что неизбежно приведет к ошибкам в работе системы, битым ссылкам и невозможности корректного тестирования базы.Для безопасного удаления или изменения данных всегда используйте стандартные средства платформы: Пометку на удаление, обработку Групповое изменение реквизитов или программное использование методов Удалить() для объектов 1С. Это гарантирует, что платформа проверит все связанные данные и сохранит целостность системы.
Если вы столкнулись с зависанием системы при попытке получения структуры данных, как это случается в конфигурациях с модулем БИТ.Финанс, попробуйте анализировать метаданные небольшими группами. Избегайте передачи всей конфигурации целиком в метод ПолучитьСтруктуруХраненияБазыДанных, так как это требует значительных ресурсов оперативной памяти.
Для более глубокого анализа всегда можно использовать Технологический журнал, который позволяет отследить, какие именно SQL-запросы формирует платформа при выполнении тех или иных операций в интерфейсе пользователя. Это самый надежный способ увидеть связь между действием в 1С и физическим запросом к базе данных.