Содержание:
1. Что дает доступ к метаданным конфигурации
2. Для чего нужен доступ к структуре метаданных
1. Что дает доступ к метаданным конфигурации
В "1С:Предприятии" дается доступ к метаданным конфигурации. Данная возможность требуется для создания общих алгоритмов, с помощью которых можно было бы упростить работу с различными объектами конфигурации.
Доступ к метаданным дает право только на непосредственное чтение, а программное изменение не поддерживается.
В документации не приводятся свойства метаданных и коллекций подчиненных ей объектов. Для знакомства со структурой и составом свойств, необходимо использовать отчет метаданным конфигурации (в режиме Конфигуратор меню Конфигурация – Отчет по конфигурации). Имена, показанные в отчете, соответствуют именам свойств и коллекций объектов.
Метаданные в отчетах и в программных моделях не содержат ранее упомянутой ветки "Общие". Ветка “Общие” используется только в дереве метаданных для дополнительного удобства и редактирования. Данная возможность требуется в отчете и в программной модели все объекты, входящие в ветку "Общие", подчиняются “корневому” объекту.
2. Для чего нужен доступ к структуре метаданных
Доступ к структуре метаданных осуществляется через Метаданные глобального контекста. Данное свойство предоставляет доступ непосредственно к корневому объекту конфигурации и коллекциям объектов. Каждый объект метаданных 1С предоставляет доступ к своим свойствам и подчиненным объектам. Так данная возможность требуется для получить доступ к множеству объектов.
Например:
Сообщить(Метаданные.Документы.Счет.Реквизиты.Контрагент);
Кроме того, у некоторых типов, предназначенных для работы с прикладными объектами, имеется метод Метаданные(), предназначенный для получения объекта метаданных 1С, отвечающего за их конкретный тип.
Например:
Док = Документы.Счет.СоздатьДокумент();
Сообщить(Док.Метаданные().ПолноеИмя());
Однако такие методы есть не у всех типов, используемых для работы с прикладными объектами. Если необходимо получить объект метаданных 1С, отвечающий за некоторый тип прикладного объекта, то можно использовать метод НайтиПоТипу().
Например:
Выборка = Документы.Счет.Выбрать();
Сообщить(Метаданные.НайтиПоТипу(ТипЗнч(Выборка)));
Объекты метаданных 1С можно сравнивать на равенство. При этом проверяется схожесть объектов, а не совпадение значений свойств. То есть проверяется то, что сравнивается конкретно – один и тот же объект метаданных конфигурации.
Например:
Сообщить(Метаданные.ОсновнаяФормаКонстант = Метаданные.ОбщиеФормы.Основная);
С помощью метода Родитель() можно получить вышестоящий объект метаданных 1С.
Например:
Сообщить(Метаданные.Документы.Счет.Реквизиты.Контрагент.Родитель());
Для представления объекта метаданных 1С пользователю нужно использовать преобразование значения к строке или метод Представление().
Например:
Сообщить(Метаданные.Справочники.РасчетныеСчета);
Сообщить(Метаданные.Справочники.РасчетныеСчета.Представление());
Объекты метаданных не могут быть сериализованы. Для получения строкового значения, соответствующему объекту метаданных, независимого от языка интерфейса пользователя нужно использовать метод ПолноеИмя().
Например:
Сообщить(Метаданные.ОбщиеФормы.Основная.ПолноеИмя());
Метаданные можно использовать, чтобы проверить, относится ли, например, значение к справочникам.
Некоторые свойства объектов метаданных имеют перечислительный тип. Это специальные перечисления. Доступ к ним в языке выполняется через коллекцию Свойства Объектов, предоставляемую “корневым” объектом метаданных. Состав этих перечислений описан в документации, в разделе, описывающем работу с объектами метаданных.
Например:
Сообщить(Метаданные.Документы.Счет.ПериодичностьНомера =
Метаданные.СвойстваОбъектов.ПериодичностьНомераДокумента.Год);
Некоторые свойства объектов метаданных являются коллекциями значений и представляются типом КоллекцияЗначенийСвойстваОбъектаМетаданных.
Например:
Сообщить(Метаданные.Документы.Счет.ВводитсяНаОсновании.Количество());
Сообщить(Метаданные.Документы.Счет.ВводитсяНаОсновании.Содержит(Метаданные.Справочники.Контрагенты));
В документации, описывающей работу с объектами метаданных, приводятся также описания специфических типов свойств метаданных, например, таких как ПараметрыВводаПоСтроке.
Следует учитывать, что не все значения свойств метаданных могут быть получены из встроенного языка. Программный доступ к объектам метаданных 1С не позволяет получать значения свойств хранящих формы, модули, разделы справочной информации, картинки, интерфейсы, стили, наборы предопределенных объектов, права.
Для получения форм и макетов используются специализированные методы.
Для получения значений, идентифицирующих стили и элементы стилей, а также картинок, используются специализированные коллекции.
Например:
Стиль = БиблиотекаСтилей.СтильФормКомпании;
ЭлементыФормы.Кнопка1.ЦветТекстаКнопки = ЦветаСтиля.ЦветПредупреждения;
ЭлементыФормы.Кнопка1.Картинка = БиблиотекаКартинок.Автозаполнение;
Для проверки прав текущего пользователя используются специализированные методы глобального контекста ПравоДоступа() и ПараметрыДоступа().
Специалист компании ООО «Кодерлайн»
Брежицкий Никита.