Найти тему

Как получить имя метаданных из ссылки в 1С?

Понимание метаданных и ссылок

Перед тем, как погрузиться в решение задачи, важно понимать, что такое метаданные и ссылки в контексте 1С:

  • Метаданные: Это описание объектов конфигурации (справочники, документы, регистры и т.д.). Они определяют структуру данных, их связи и поведение.
  • Ссылки: Это указатели на конкретные объекты данных. Например, ссылка на элемент справочника "Номенклатура" указывает на конкретный товар.

Получение имени метаданных

Чтобы получить имя метаданных из ссылки, нужно обратиться к свойству Метаданные у этой ссылки. Это свойство возвращает объект метаданных, соответствующий типу ссылки. Затем, у полученного объекта метаданных можно получить свойство Имя, которое содержит имя объекта метаданных.

Пример кода:

1C

// Предположим, у нас есть ссылка на элемент справочника "Номенклатура"
НоменклатураСсылка = Справочники.Номенклатура.НайтиПоКоду("Товар1");

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

// Получаем имя объекта метаданных
ИмяМетаданных = МетаданныеНоменклатуры.Имя;

// Выводим результат в окно сообщения
Сообщить("Имя метаданных: " + ИмяМетаданных); // Выведет: Имя метаданных: Номенклатура

Разберем код пошагово:

  1. Получение ссылки: Сначала мы получаем ссылку на конкретный элемент справочника.
  2. Получение объекта метаданных: Свойство Метаданные у ссылки возвращает объект, описывающий структуру этого типа данных.
  3. Получение имени: Свойство Имя у объекта метаданных содержит его название, в данном случае "Номенклатура".

Другие полезные свойства объекта метаданных:

  • ПолноеИмя: Возвращает полное имя объекта, включая тип (например, "Справочник.Номенклатура").
  • Таблица: Возвращает таблицу базы данных, соответствующую объекту метаданных.
  • Ресурсы: Возвращает коллекцию ресурсов, связанных с объектом (формы, отчеты и т.д.).

Использование в запросах:

Вы можете использовать полученное имя метаданных в запросах для динамического формирования отборов и группировок. Например:

// Запрос для получения списка элементов справочника по его имени
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| "+ИмяМетаданных+".*
ИЗ
| "+ИмяМетаданных;

Результат = Запрос.Выполнить().Выгрузить();

Важные моменты:

  • Тип ссылки: Убедитесь, что у вас правильный тип ссылки. Для разных типов объектов (справочники, документы, регистры) методы получения метаданных могут отличаться.
  • Контекст выполнения: В некоторых случаях может потребоваться уточнить контекст выполнения запроса (например, для получения информации о метаданных из внешних обработок).
  • Производительность: Частое обращение к метаданным может снизить производительность системы. Старайтесь кэшировать полученные значения, если они используются многократно.