Как найти соответствие технических имен полей базы данных и реквизитов конфигурации в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с базами данных 1С:Предприятия часто возникает необходимость сопоставить технические имена полей, которые мы видим при прямом анализе SQL-таблиц (вида _Fld...), с понятными именами реквизитов, заданными в Конфигураторе. Разберемся, где искать эту информацию и как правильно работать со структурой хранения данных.

Понимание архитектуры метаданных 1С

Важно понимать, что в базе данных 1С:Предприятия не существует единой системной таблицы, где было бы жестко прописано: «поле _Fld12345 соответствует реквизиту ДатаОтгрузки». Соответствие между объектами метаданных и физическими полями в СУБД хранится внутри самой конфигурации и интерпретируется платформой «на лету».

При изменении структуры метаданных (добавлении реквизитов, смене типов данных) платформа сама выполняет реструктуризацию, создавая или удаляя поля в SQL-таблицах. Поэтому единственный надежный способ получить актуальную карту соответствий — это обращение к самой платформе 1С через встроенный язык.

Использование метода ПолучитьСтруктуруХраненияБазыДанных

Для получения информации о том, как объекты метаданных представлены в базе данных, разработчики используют специальный метод встроенного языка ПолучитьСтруктуруХраненияБазыДанных(). Этот метод возвращает соответствие объектов метаданных их физическому представлению.

Рассмотрим, как можно программно извлечь эту информацию. Мы можем обходить коллекцию метаданных и анализировать их структуру. Примерный алгоритм действий выглядит следующим образом:


// Пример получения структуры для справочника
МетаданныеОбъекта = Метаданные.Справочники.Номенклатура;
СтруктураХранения = ПолучитьСтруктуруХраненияБазыДанных(МетаданныеОбъекта);

Для Каждого ЭлементСтруктуры Из СтруктураХранения Цикл
    // Вывод имени реквизита и соответствующего ему поля в БД
    Сообщить("Реквизит: " + ЭлементСтруктуры.Ключ + " -> Поле БД: " + ЭлементСтруктуры.Значение.ИмяПоля);
КонецЦикла;

Почему обработка «СтруктураИБ» может не показывать данные?

Часто разработчики пользуются готовыми обработками, такими как СтруктураИБ_УФ. Если вы видите пустые колонки с именами полей, не спешите искать секретные системные таблицы. Разберем типичные причины такого поведения:

  1. Программный сбой или устаревшая версия: В коде обработки может быть ошибка при получении данных или несовместимость с текущей версией платформы. Всегда проверяйте код обработки на наличие вызова метода ПолучитьСтруктуруХраненияБазыДанных().
  2. Недостаточно прав: Для получения структуры хранения базы данных у пользователя должны быть соответствующие административные права в системе.
  3. Глюк отображения: Иногда проблема кроется не в данных, а в интерфейсе самой формы (динамический список или таблица могут просто не обновляться). Попробуйте переоткрыть обработку или очистить кэш.

Советы по работе со структурой

Если вам нужно быстро найти поле, не полагайтесь на сторонние утилиты, а попробуйте написать простой скрипт в консоли кода. Это даст вам 100% уверенность в результате. Разберем шаги:

Шаг 1: Определите объект метаданных, который вас интересует (например, документ РеализацияТоваровУслуг).

Шаг 2: Используйте метод ПолучитьСтруктуруХраненияБазыДанных() для получения полного соответствия реквизитов и таблиц.

Шаг 3: Сравните результат с тем, что вы видите в SQL. Помните, что технические имена вида _Fld... являются внутренними идентификаторами, которые могут меняться при глобальных изменениях конфигурации. Никогда не «зашивайте» их в SQL-запросы напрямую, так как после обновления конфигурации (обновления реструктуризации) ваш код может перестать работать.

Если вы столкнулись с тем, что нужная колонка не отображается, первым делом загляните в код обработки, которой вы пользуетесь. Чаще всего ответ на ваш вопрос скрыт прямо там — в одной или двух строках кода, которые получают структуру. Будьте внимательны к результатам выполнения функций платформы, и вы легко решите задачу поиска соответствий.

← На главную