Перейти к содержимому

Как получить структуру метаданных 1с

  • автор:

Перебор метаданных

Метаданные — это объект который содержит описание структуры данных и доступен в глобальном контексте. Во встроенном языке программирования 1С он используется для доступа к структуре метаданных конфигурации. Структура данных задается в конфигураторе в специальном окне с заголовком "Конфигурация". Из объекта "Метаданные" можно получить свойства и коллекцию справочников, документов, регистров сведений и других объектов.

Просмотр всех метаданных и их свойств в "Отчете по конфигурации"

Для того чтобы вывести список всех метаданных в текстовый файл или табличный документ, необходимо в главном меню выбрать Конфигурация->Отчет по конфигурации. .

Пример перебора коллекций метаданных

Комментарии (0)

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

Метаданные 1С

В этой статье разберем метаданные 1С. Метаданные или объекты метаданных в 1С – это «кирпичики», из которых строится конфигурация 1С. Узнаем, что такое метаданные (объекты метаданных) и научимся получать значения свойств объектов метаданных.

В учебной конфигурации, справочник Номенклатура – это объект метаданных. Документ Закупка товаров – тоже объект метаданных.

Все объекты метаданных 1С перечислены в дереве конфигурации.

Метаданные 1С

У объектов метаданных имеются прототипы. Визуально в дереве конфигурации прототипы представлены в виде веток дерева.

Например, у справочника Номенклатура прототип Справочники.

Прототип объекта метаданных 1С

А у документа Закупка товаров – прототип Документы.

Прототип объекта метаданных 1С

У объектов одного прототипа похожие свойств и методы. Кроме принадлежности к прототипу свойства и методы объектов метаданных определяются дополнительными характеристиками. Например, включена у справочников иерархия или нет.

В процессе конфигурирования разработчик настраивает свойства объектов метаданных. Например, длина кода справочника 1С это свойство. В учебной конфигурации у справочника Номенклатура длина кода 9.

Свойство объекта метаданных 1С

А у справочника Валюта – 3.

Свойство объекта метаданных 1С

На свойства объекта метаданных можно посмотреть, как в редакторе объекта. Редактор открывается при двойном клике мышкой по объекту. Так и в палитре свойств объекта. Для того, чтобы открыть палитру свойств, следует выделить объект, вызвать контекстное меню и выполнить команду «Свойства».

Свойство объекта метаданных 1С

После, справа откроется палитра свойств объекта метаданных, в которой можно прочитать или отредактировать разные свойства объекта. Например, длину наименования.

Свойство объекта метаданных 1С

К свойствам объектов метаданных можно обратиться при помощи программного кода. Сделать это можно воспользовавшись свойством глобального контекста, которое так и называется Метаданные.

Это свойство является коллекцией объектов метаданных и включает в себя все метаданные конфигурации 1С, которые даже не созданы.

Метаданные 1С

У свойства Метаданные имеются свойства, которые отображают прототипы объектов. Это тоже коллекции. Например, для справочников имеется свое свойство.

Метаданные 1С

Которое, также является коллекцией.

Метаданные 1С

В этой коллекции содержатся все объекты метаданных, которые входят в ветку Справочники дерева конфигурации 1С.

Мы можем прочитать свойство того или иного объекта метаданных. Например, длину кода у справочника Валюта.

Метаданные 1С

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

Например, обойдем циклом справочники и выведем имя справочника, синоним и длину кода.

В учебной конфигурации, у этого кода будет следующий результат.

Метаданные 1С

Обратите внимание, что этот код должен выполняться в серверном контексте (или в клиентском на толстом клиенте), поскольку у свойства Метаданные доступность Сервер, Толстый клиент и т.д.

Метаданные 1С

Кроме свойств объекта можно получить доступ к свойствам реквизитов при помощи всё того же свойства глобального контекста Метаданные. Для того, чтобы обратиться к реквизитам объекта, необходимо получить доступ к этому объекту посредством свойства глобального контекста Метаданные, а потом уже обратиться к свойству Реквизиты полученного объекта.

Например, к реквизитам конкурентного справочника можно обратиться так:

А к реквизитам конкурентного документа – так:

Получаемые реквизиты являются коллекцией, которая содержит все реквизиты объекта. Её также можно обойти циклом и прочитать тот или иной реквизит.

Результат работы этого кода в учебной конфигурации будет следующим.

Метаданные 1С

Некоторые свойства объектов имеют перечисленный тип, т.е. перечисление определенных значений. Например, у документов имеется свойство Проведение. У этого свойства есть несколько значений: Разрешить и Запретить. Свойство Проведение и является перечисленным типом.

Перечисленный тип 1С

При помощи свойства глобального контекста Метаданные мы можем проверить какое значение перечисленного типа установлено у того или иного объекта. Для этого нужно воспользоваться свойством СвойстваОбъектов. Оно содержит в себе все перечисленные типы и их значения.

Перечисленный тип 1С

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

Перечисленный тип 1С

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

Читайте также по теме:

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Работа с метаданными

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


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

Зачем нужна работа с метаданными

Бывают ситуации когда надо обработать по одному правилу все схожие между собой объекты. Допустим нам надо написать обработку, которая будет производить некие действия со всеми справочниками у которых есть реквизит Товар. Без использования метаданных надо будет проанализировать вручную всю ветку со справочниками в дереве конфигурации и для каждого справочника написать отдельный код. А с использованием метаданных мы можем программно обойти все справочники, а затем для каждого справочника можем проанализировать все его реквизиты. И в случае если искомый реквизит найден обработать все элементы справочника. Этот подход значительно уменьшит количество кода и предварительной ручной работы. Опять же если в конфигурацию будет добавлен новый справочник, в первом случае (без использования метаданных) необходимо будет дорабатывать обработку. Если же были использованы метаданные, никакой доработки не потребуется.

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

Примеры

Обход метаданных в цикле

В качестве первого примера рассмотрим обход в цикле всех справочников и для каждого справочника также в цикле обход всех его реквизитов. Доступ к метаданным осуществляется с использованием свойства глобального контекста Метаданные. Вот код который выполняет данную задачу

Получение метаданных по ссылке объекта

Зачастую возникает ситуация когда надо получить метаданные по ссылке какого-нибудь объекта. Это может быть элемент справочника, документ и т.д. И здесь нам поможет метод НайтиПоТипу( ). Этот метод позволяет получить метаданные по типу объекта. Соответственно если у нас есть ссылка нам надо сначала узнать ее тип. Сделать это поможет функция ТипЗнч( ). В качестве примера возьмем справочник Пользователи (т.к. он есть наверное во всех конфигурациях). Выберем из него первый попавшийся элемент и получим по нему метаданные.

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

Cуществует еще один метод, который позволяет получить метаданные по полному имени объекта. Речь идет о методе НайтиПоПолномуИмени( ). Если взять тот же справочник Пользователи, то его полное имя выглядить как Справочник.Пользователи. Соответственно код для получения метаданных справочника Пользователи по полному имени выглядит вот так

Если выбирать между получением метаданных по ссылке и по полному имени, то мне больше по душе метод НайтиПоТипу( ).

Конечно Имя и Синоним, в примерах выше — это лишь малая часть информации, которую можно извлечь из метаданных. Но тут как говориться Shift + F9 в помощь.

Работа с объектами в 1С

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

Доступ к метаданным дает право только на непосредственное чтение, а программное изменение не поддерживается.

В документации не приводятся свойства метаданных и коллекций подчиненных ей объектов. Для знакомства со структурой и составом свойств, необходимо использовать отчет метаданным конфигурации (в режиме Конфигуратор меню Конфигурация – Отчет по конфигурации). Имена, показанные в отчете, соответствуют именам свойств и коллекций объектов.

Метаданные в отчетах и в программных моделях не содержат ранее упомянутой ветки «Общие». Ветка “Общие” используется только в дереве метаданных для дополнительного удобства и редактирования. Данная возможность требуется в отчете и в программной модели все объекты, входящие в ветку «Общие», подчиняются “корневому” объекту.

2. Для чего нужен доступ к структуре метаданных

Доступ к структуре метаданных осуществляется через Метаданные глобального контекста. Данное свойство предоставляет доступ непосредственно к корневому объекту конфигурации и коллекциям объектов. Каждый объект метаданных 1С предоставляет доступ к своим свойствам и подчиненным объектам. Так данная возможность требуется для получить доступ к множеству объектов.

Кроме того, у некоторых типов, предназначенных для работы с прикладными объектами, имеется метод Метаданные(), предназначенный для получения объекта метаданных 1С, отвечающего за их конкретный тип.

Однако такие методы есть не у всех типов, используемых для работы с прикладными объектами. Если необходимо получить объект метаданных 1С, отвечающий за некоторый тип прикладного объекта, то можно использовать метод НайтиПоТипу().

Объекты метаданных 1С можно сравнивать на равенство. При этом проверяется схожесть объектов, а не совпадение значений свойств. То есть проверяется то, что сравнивается конкретно – один и тот же объект метаданных конфигурации.

С помощью метода Родитель() можно получить вышестоящий объект метаданных 1С.

Для представления объекта метаданных 1С пользователю нужно использовать преобразование значения к строке или метод Представление().

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

Метаданные можно использовать, чтобы проверить, относится ли, например, значение к справочникам.

Некоторые свойства объектов метаданных имеют перечислительный тип. Это специальные перечисления. Доступ к ним в языке выполняется через коллекцию Свойства Объектов, предоставляемую “корневым” объектом метаданных. Состав этих перечислений описан в документации, в разделе, описывающем работу с объектами метаданных.

Некоторые свойства объектов метаданных являются коллекциями значений и представляются типом КоллекцияЗначенийСвойстваОбъектаМетаданных.

В документации, описывающей работу с объектами метаданных, приводятся также описания специфических типов свойств метаданных, например, таких как ПараметрыВводаПоСтроке.

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

Для получения форм и макетов используются специализированные методы.

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

Для проверки прав текущего пользователя используются специализированные методы глобального контекста ПравоДоступа() и ПараметрыДоступа().

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *