Переход с платформы 1С:Предприятие 7.7 на версию 8.х часто вызывает вопросы у разработчиков, привыкших к определенным инструментам. Одним из таких инструментов в «семерке» был файл описания структуры базы данных (с расширением .dd или .dds), который позволял быстро просмотреть все реквизиты документов, справочников и регистров. В 1С 8.х (которую в кругах разработчиков часто называют «снеговиком») подход изменился: теперь конфигурация — это объектно-ориентированная среда, и получить информацию о структуре можно как интерактивно, так и программно. В этой статье мы разберем все доступные способы получения списка реквизитов.
Если вам нужно получить полное текстовое или табличное описание всей конфигурации (аналог того самого файла из 7.7), рассмотрим стандартный инструмент конфигуратора. Этот метод не требует написания кода и позволяет сохранить данные во внешний файл.
Разберем последовательность действий:
Проанализируем результат: в сформированном отчете будут перечислены все объекты метаданных, их типы, реквизиты, табличные части и даже права доступа. Этот отчет можно сохранить в формате .txt или .mxl, что фактически заменяет старый добрый файл описания из прошлых версий программы.
Иногда нам не нужен отчет по всей конфигурации, а достаточно получить список реквизитов одного конкретного справочника или документа. В 1С 8 существует малозаметная, но очень эффективная функция.
Выполним следующие шаги:
Справочники.Номенклатура).После этого платформа предложит выбрать колонки (Имя, Тип, Синоним) и сформирует табличный документ. Этот список легко скопировать в Excel или распечатать. Это самый быстрый интерактивный способ «увидеть всё» без лишних усилий.
Если вам необходимо получить список реквизитов динамически во время работы программы (например, для создания универсальной обработки или выгрузки данных), мы будем использовать встроенный объект Метаданные. Глобальный контекст Метаданные предоставляет доступ ко всей структуре конфигурации.
Рассмотрим пример кода, который выводит в окно сообщений все реквизиты конкретного документа:
// Выберем интересующий нас документ
ИмяДокумента = "РеализацияТоваровУслуг";
ОбъектМетаданных = Метаданные.Документы[ИмяДокумента];
Сообщить("Список реквизитов документа: " + ОбъектМетаданных.Имя);
// Перебираем основные реквизиты
Для Каждого Реквизит Из ОбъектМетаданных.Реквизиты Цикл
Сообщить(" - " + Реквизит.Имя + " (Тип: " + Реквизит.Тип + ")");
КонецЦикла;
// Не забываем про табличные части, если они есть
Для Каждого ТабЧасть Из ОбъектМетаданных.ТабличныеЧасти Цикл
Сообщить("Табличная часть: " + ТабЧасть.Имя);
Для Каждого РеквизитТЧ Из ТабЧасть.Реквизиты Цикл
Сообщить(" -- " + РеквизитТЧ.Имя + " (Тип: " + РеквизитТЧ.Тип + ")");
КонецЦикла;
КонецЦикла;
В этом примере мы используем коллекцию Реквизиты и ТабличныеЧасти. Обратите внимание, что программный доступ позволяет получить не только имя, но и тип данных, длину строки, точность числа и другие свойства, которые были заданы в конфигураторе.
Для тех, кто ищет именно техническое соответствие имен объектов 1С и имен таблиц в SQL-базе (например, чтобы написать прямой запрос к СУБД), в «восьмерке» предусмотрен специальный метод. Это максимально приближенная функциональность к тому, что требовал автор исходного сообщения.
Разберем работу метода ПолучитьСтруктуруХраненияБазыДанных(). Этот метод возвращает таблицу значений с полным описанием физической структуры.
// Получаем структуру для всей базы или для списка имен
МассивИмен = Новый Массив;
МассивИмен.Добавить("Справочник.Контрагенты");
ТаблицаСтруктуры = ПолучитьСтруктуруХраненияБазыДанных(МассивИмен);
// Теперь проанализируем таблицу
Для Каждого СтрокаСтруктуры Из ТаблицаСтруктуры Цикл
Сообщить("Объект: " + СтрокаСтруктуры.ИмяТаблицы + " соответствует таблице в SQL: " + СтрокаСтруктуры.ИмяТаблицыХранения);
// Перебираем поля таблицы
Для Каждого Поле Из СтрокаСтруктуры.Поля Цикл
Сообщить(" Реквизит: " + Поле.ИмяПоля + " -> Поле SQL: " + Поле.ИмяПоляХранения);
КонецЦикла;
КонецЦикла;
Этот метод незаменим для системных администраторов и разработчиков, занимающихся оптимизацией или интеграцией на уровне SQL. Важно помнить, что структура хранения может меняться при реструктуризации базы, поэтому такие данные лучше получать динамически, а не сохранять в статичный файл.
Современные версии платформы 8.3 позволяют сделать то, о чем мечтали разработчики времен 7.7 — превратить всю конфигурацию в набор текстовых файлов. Это делается через механизм выгрузки в XML.
Проделаем следующее:
После завершения процесса в указанной папке вы найдете иерархию каталогов. Каждый объект (справочник, документ) будет представлен отдельным XML-файлом. Открыв такой файл в любом текстовом редакторе (например, Notepad++ или VS Code), вы увидите полное описание всех реквизитов в структурированном виде. Это идеальный способ для тех, кто хочет использовать глобальный поиск по всей структуре объектов или сравнивать версии конфигурации.
Если вам нужно просто быстро посмотреть список реквизитов «здесь и сейчас», не создавая отчетов и не выходя из режима программирования, воспользуйтесь консолью запросов или просто создайте новый запрос в коде.
Проанализируем этот лайфхак: открыв «Конструктор запроса» и выбрав таблицу (например, Документ.ЗаказПокупателя), вы мгновенно видите дерево всех его реквизитов, включая стандартные (Ссылка, Номер, Дата, Проведен и т.д.). Конструктор также сразу показывает типы связей и структуру вложенных табличных частей. Это самый эффективный способ для визуальной ориентировки в незнакомой конфигурации.
Подводя итог, можно сказать, что хотя в 1С 8.х нет единого статического файла .dd, платформа предоставляет гораздо более мощные и гибкие инструменты. Мы рассмотрели:
Выбирайте наиболее подходящий метод в зависимости от вашей текущей задачи!