Работа с метаданными. Метаданные – это что? Обход метаданных в цикле
Метаданные 1С – это список справочников, документов, их реквизитов и прочего, составляющего конфигурацию. Список метаданных 1С правится программистов в конфигураторе в окне конфигурации.
Из программы на языке 1С доступен список метаданных 1С и их свойства.
Это удобно, когда требуется получить список документов в конфигурации или отработать все реквизиты документа.
Рассмотрим, как работать с метаданными 1С конфигурации из языка 1С.
Метаданные 1С конфигурации
Глобальная переменная Метаданные дает доступ к метаданным 1С всей конфигурации (т.е. к «корню» конфигурации). Далее через точку можно обращаться к «коллекциям» — документы, справочники и т.п., чтобы выйти на конкретный справочник или документ, у которых соответственно есть «коллекции» реквизиты, табличные части и т.п. – все, как в конфигураторе, в дереве конфигурации.
Пример – создадим список всех документов конфигурации для того, чтобы пользователь мог выбрать нужный документ из списка:
спДокументовКонфигурации = Новый СписокЗначений(); //сюда будем сохранять список
//Метаданные – глобальная переменная, которая дает доступ ко всем метаданным 1С конфигурации//Метаданные.Документы – коллекция документов конфигурацииДля каждого Документ из Метаданные.Документы Цикл //Документ – это метаданные 1С документа (каждого, так как мы обходим их в цикле) //.
Имя – наименование документа так, как оно задано в конфигурации //.Синоним – “человеческое” наименование документа, которое отображается пользователю //список значений может хранить значение (имя документа) и “представление для пользователя” (как раз – синоним документа) спДокументовКонфигурации.Добавить(Документ.
Имя, Документ.Синоним);
КонецЦикла;
//даем возможность пользователю выбрать из списка нужный документ
элДокумент = спДокументовКонфигурации.ВыбратьЭлемент();
//если пользователь нажал “Отмена”, то результатом выбора будет значение НЕОПРЕДЕЛЕНО, иначе результатом будет – выбранный элементЕсли элДокумент Неопределено Тогда //в.
Значение списка значений мы записывали имя документа “как в конфигурации” //создадим новый документ с таким именем, напомним – к документам можно обращаться Документы.ИмяДокумента или Документы[ИмяДокумента] обДокумент = Документы[элДокумент.Значение].СоздатьДокумент(); //ДокументОбъект.
ПолучитьФорму() – возвращает форму с указанным именем, а если имя не указано – то форму “по-умолчанию” обДокумент.ПолучитьФорму().Открыть();
КонецЕсли;
Пример – для общего журнала документов (отображающего все виды документов) создадим запрос, который вернет список всех документов:
Метаданные 1С объекта
Большинство объектов 1С, сохраняемых в базе данных (справочники, документы и т.д.) представлены ссылками и объектами (подробнее см. «Ссылки и объекты»).
У ссылок и объектов есть метод.Метаданные(), который позволяет выйти на метаданные 1С этого объекта.
Пример – проверка на наличие реквизитов с типом «Справочник.Организация» в документе и обнуление значения этих реквизитов: //ДокументОбъект – документ, полученный на изменение или создание//аналогичным образом можно работать со ссылками, например: ДокументСсылка = Документ.ИмяДокумента.ПустаяСсылка().Метаданные()
ДокументОбъект = Документы.ПоступлениеТоваров.СоздатьДокумент();
//цикл по реквизитамДля каждого Реквизит из ДокументОбъект.Метаданные().Реквизиты Цикл //у каждого реквизита может быть как один, так и несколько типов, подробнее см.
“ОписаниеТипов” //проверяем по каждому типу – тот ли это нужный нам? //обнуляем реквизит с этим именем в документе //для “обнуления” можно приравнивать его к Неопределено, //по факту значение будет установлено не Неопределено, а “пустое значение” типа реквизита //Неопределено только если у реквизита несколько типов ДокументОбъект[Реквизит.Имя] = Неопределено; КонецЕсли; КонецЦикла;
КонецЦикла;
//цикл по табличным частямДля каждого ТабЧасть из ДокументОбъект.Метаданные().ТабличныеЧасти Цикл //в табличной части тоже реквизиты (колонки таб.части) Для каждого Реквизит из ТабЧасть.Реквизиты Цикл //здесь аналогично мТипов = Реквизит.Тип.
Типы(); Для каждого Тип из мТипов Цикл Если Тип = Тип(“СправочникСсылка.Организации”) Тогда //так как это таб.часть, то мы должны пройтись по всем строкам этой тач. части Для каждого Строка из ДокументОбъект[ТабЧасть.Имя] Цикл Строка[Реквизит.
Имя] = Неопределено; КонецЦикла; КонецЕсли; КонецЦикла; КонецЦикла;
КонецЦикла;
Существует множество баз данных. Чтобы понять, что они собой представляют, необходимо рассматривать их содержимое. Но есть одна маленькая полезная деталь – метаданные. Это то, что обобщает всю имеющуюся информацию. Для чего они были разработаны и зачем используются?
Что такое метаданные?
Следует отметить, что единой формулировки данного понятия не существует. Итак, метаданные – это общее название информации о
В основном используется четыре обозначения данного термина:
- Могут подразумевать субканальную информацию про используемые данные.
- Так называют характеристики, описывающие сущность. Они необходимы, чтобы искать, идентифицировать, оценивать и управлять значениями в БД. Ещё таким образом называют важный набор определённого количества структурированных описаний, предоставленных в допустимой форме и доступных в явном виде, благодаря чему можно найти необходимый объект. Подобная формулировка применяется в случаях, когда необходимо искать сущности, ресурсы и объекты.
- Данные из общей формальной системы, которые описывают свойства конкретного хранилища информации.
- Информация про характеристики веб-страницы (когда была создана, кто её автор).
Различие между данными и метаданными
Как их отличают? Дело в том, что провести однозначное разделение обычно невозможно. Почему? Давайте рассмотрим более детально на примере:
- Что-то может выступать в обеих ролях. Например, заголовок статьи может рассматриваться и как элемент метаданных, и в качестве информации, что передаётся читателю.
- Возможность меняться местами. Допустим, кто-то написал стихотворное произведение. Оно представляет собой данные. Композитор, опираясь на слова, создал музыкальную композицию и прикрепил данный текст. В таком случае он превращается в метаданные. Всё зависит от использования. Вообще, подобные случаи возможны из-за восприятия определённой точки зрения на основании своих суждений (тут играет роль пространство имён и система отсчёта).
- Возможность создания мета-…-метаданных ориентируясь на аксиому выбора. Это вытекает из того, что почти на любую информацию может быть создана своя система характеристик.
Метаданные файлов в компьютерах
Своё применение они нашли и в автоматизированных рабочих потоках. Если какая-то программа умеет работать с содержимым и то они могут быть преобразованы в другой тип информации, что позволяет освобождать пользователей от множества неудобных и рутинных действий.
Примером могут служить разработки, которые позволяют просматривать графические изображения с разными расширениями. Также можно вспомнить и о различных записях звука, фильмов и многих других вещах.
Метаданные в мировой сети
В интернете с их помощью осуществляется поиск необходимой полезной информации среди огромных массивов данных. С этой точки зрения, метаданные, которые создаются вручную, представляют большую ценность ввиду своей осмысленности.
В качестве подобного типа информации могут выступать ключевые слова, теги и ряд других элементов. Метаданные – это то, что кратко рассказывает о сайте.
При проведении анализа поисковыми системами нескольких сайтов, если они выявят на них одинаковые тематические слова, то их взаимное указание друг на друга будет иметь большее значение, чем с обычных сайтов.
Классификация метаданных
Как их различают? В основном классификация проводится по одному из двух принципов:
- . Метаданные используются, чтобы описывать файл, ресурс или его содержимое (к примеру, заголовок – «как готовить картошку»).
- По принадлежности. Метаданные могу использовать, чтобы информировать о чем-то целом или его составляющей. Так, название фильма относится ко всему нему, а описание эпизода информирует только об определенной части.
Если метаданные – это совокупность зависимостей от возможностей логического вывода, то в таком случае они делятся на 3 вида:
- «Сырые» данные. Основа информационного обеспечения.
- Метаданные, описывающие содержимое. Они, в свою очередь, тоже используются.
- Метаданные, с помощью которых можно сделать логический вывод.
Такие типы метаданных существуют.
Три наиболее востребованных класса
Предлагаем ознакомиться с тремя классами, которые сейчас широко применяются:
- Внутренние метаданные. Это информация, которая описывает составные части вещей, их структуру и что она собой представляет. В качестве примера можно привести размер и формат файла.
- Административные метаданные. Требуются для процессов обработки информации, а также для назначения вещи. Например, кто автор, редактор, когда был создан файл.
- Описательные метаданные. Используются, чтобы охарактеризовать природу файла и его признаки (к какой категории относится, с чем ещё связан).
Формат метаданных
Так называют стандарт, который используется, чтобы проводить формальное описание какой-то категории ресурсов (сущностей, объектов и тому подобного).
Обычно в нём есть определённый набор, который характеризует рассматриваемый объект. Для этого используются атрибуты, свойства, элементы метаданных.
Классифицируются по охвату и подробностям описываемых ресурсов.
Возможные проблемы
Когда может возникать ошибка метаданных? Отсутствие необходимой информации или ограничение доступа – вот основные причины возникающих проблем.
Также ошибка загрузки метаданных появляется в тех случаях, когда файл есть, но он повреждён. Основных причин такого состояния насчитывают три: износ техники, вредоносное влияние отдельных программ (как правило, компьютерных вирусов) и неправильное завершение работы с документом, по причине чего данные сохранились некорректно.
Соответственно, значение метаданных в классификации и систематизировании сетевой информации трудно переоценить. Поэтому желающим оптимизировать собственный сайт просто необходимы знания о них.
Что такое метаданные
Метаданные представляют собой структуру базы данных 1С:Предприятия. То есть это структура в которой описываются справочники, документы, регистры, перечисления и т.д., а также подчиненные им элементы: табличные части, реквизиты, измерения ресурсы и прочее. Визуально мы можем наблюдать эту структуру в конфигураторе, когда открываем дерево конфигурации.
Редактирование метаданных возможно только в режиме конфигуратора, но в языке 1С существуют методы и функции, которые осуществляют программный доступ к метаданным в режиме чтения.
Зачем нужна работа с метаданными
Бывают ситуации когда надо обработать по одному правилу все схожие между собой объекты. Допустим нам надо написать обработку, которая будет производить некие действия со всеми справочниками у которых есть реквизит Товар.
Без использования метаданных надо будет проанализировать вручную всю ветку со справочниками в дереве конфигурации и для каждого справочника написать отдельный код.
А с использованием метаданных мы можем программно обойти все справочники, а затем для каждого справочника можем проанализировать все его реквизиты. И в случае если искомый реквизит найден обработать все элементы справочника. Этот подход значительно уменьшит количество кода и предварительной ручной работы.
Опять же если в конфигурацию будет добавлен новый справочник, в первом случае (без использования метаданных) необходимо будет дорабатывать обработку. Если же были использованы метаданные, никакой доработки не потребуется.
Также метаданные можно использовать в случае работы с реквизитами составного типа. Когда в зависимости от метаданных реквизита может различаться алгоритм работы программы.
Обход метаданных в цикле
В качестве первого примера рассмотрим обход в цикле всех справочников и для каждого справочника также в цикле обход всех его реквизитов. Доступ к метаданным осуществляется с использованием свойства глобального контекста Метаданные. Вот код который выполняет данную задачу
Для каждого МетаданныеСправочника Из Метаданные.Справочники Цикл Сообщить(МетаданныеСправочника.Имя); Сообщить(МетаданныеСправочника.Синоним); Для каждого РеквизитСправочника Из МетаданныеСправочника.Реквизиты Цикл Сообщить(РеквизитСправочника.Имя); Сообщить(РеквизитСправочника.Синоним); КонецЦикла; КонецЦикла;
Получение метаданных по ссылке объекта
Зачастую возникает ситуация когда надо получить метаданные по ссылке какого-нибудь объекта. Это может быть элемент справочника, документ и т.д. И здесь нам поможет метод НайтиПоТипу(). Этот метод позволяет получить метаданные по типу объекта.
Соответственно если у нас есть ссылка нам надо сначала узнать ее тип. Сделать это поможет функция ТипЗнч(). В качестве примера возьмем справочник Пользователи (т.к. он есть наверное во всех конфигурациях).
Выберем из него первый попавшийся элемент и получим по нему метаданные.
Запрос = Новый Запрос; Запрос.Текст = “ВЫБРАТЬ ПЕРВЫЕ 1| Пользователи.Ссылка|ИЗ | Справочник.Пользователи КАК Пользователи”; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(Выборка.Ссылка)); Сообщить(МетаданныеОбъекта.Имя); Сообщить(МетаданныеОбъекта.Синоним); КонецЦикла;
Получение метаданных по полному имени
Cуществует еще один метод, который позволяет получить метаданные по полному имени объекта. Речь идет о методе НайтиПоПолномуИмени(). Если взять тот же справочник Пользователи, то его полное имя выглядить как Справочник.Пользователи. Соответственно код для получения метаданных справочника Пользователи по полному имени выглядит вот так
МетаданныеПользователи = Метаданные.НайтиПоПолномуИмени(“Справочник.Пользователи”);
Если выбирать между получением метаданных по ссылке и по полному имени, то мне больше по душе метод НайтиПоТипу().
Конечно Имя и Синоним, в примерах выше — это лишь малая часть информации, которую можно извлечь из метаданных. Но тут как говориться в помощь.
Источник: https://www.auturs.ru/pts/rabota-s-metadannymi-metadannye-eto-chto-obhod-metadannyh-v.html
1с получить имя объекта метаданных. Работа с метаданными. Обход метаданных в цикле
Существует множество баз данных. Чтобы понять, что они собой представляют, необходимо рассматривать их содержимое. Но есть одна маленькая полезная деталь – метаданные. Это то, что обобщает всю имеющуюся информацию. Для чего они были разработаны и зачем используются?