Войти
Образовательный портал. Образование
  • Рецепты варенья из кабачков с лимоном, с курагой и в ананасовом соке
  • Как приготовить вкусные куриные сердечки с картофелем в мультиварке Куриные сердечки рецепт в мультиварке с картофелем
  • Сырный суп с курицей и грибами Куриный суп с сыром и грибами
  • Четверка монет таро значение
  • Что такое договор найма служебного жилого помещения?
  • Хлеб по технологии в духовке на дрожжах
  • Как из объекта метаданных объект. Работа с метаданными. Метаданные файлов в компьютерах

    Как из объекта метаданных объект. Работа с метаданными. Метаданные файлов в компьютерах

    Что такое метаданные

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

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

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

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

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

    Примеры

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

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

    Для каждого МетаданныеСправочника Из Метаданные. Справочники Цикл Сообщить(МетаданныеСправочника. Имя) ; Сообщить(МетаданныеСправочника. Синоним) ; Для каждого РеквизитСправочника Из МетаданныеСправочника. Реквизиты Цикл Сообщить(РеквизитСправочника. Имя) ; Сообщить(РеквизитСправочника. Синоним) ; КонецЦикла ; КонецЦикла ;

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

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

    Запрос = Новый Запрос; Запрос. Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Пользователи.Ссылка |ИЗ | Справочник.Пользователи КАК Пользователи" ; Результат = Запрос. Выполнить () ; Выборка = Результат. Выбрать() ; Пока Выборка. Следующий() Цикл МетаданныеОбъекта = Метаданные. НайтиПоТипу(ТипЗнч(Выборка. Ссылка) ) ; Сообщить(МетаданныеОбъекта. Имя) ; Сообщить(МетаданныеОбъекта. Синоним) ; КонецЦикла ;

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

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

    МетаданныеПользователи = Метаданные. НайтиПоПолномуИмени("Справочник.Пользователи" ) ;

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

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

    Существует множество баз данных. Чтобы понять, что они собой представляют, необходимо рассматривать их содержимое. Но есть одна маленькая полезная деталь - метаданные. Это то, что обобщает всю имеющуюся информацию. Для чего они были разработаны и зачем используются?

    Что такое метаданные?

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

    В основном используется четыре обозначения данного термина:

    1. Могут подразумевать субканальную информацию про используемые данные.
    2. Так называют характеристики, описывающие сущность. Они необходимы, чтобы искать, идентифицировать, оценивать и управлять значениями в БД. Ещё таким образом называют важный набор определённого количества структурированных описаний, предоставленных в допустимой форме и доступных в явном виде, благодаря чему можно найти необходимый объект. Подобная формулировка применяется в случаях, когда необходимо искать сущности, ресурсы и объекты.
    3. Данные из общей формальной системы, которые описывают свойства конкретного хранилища информации.
    4. Информация про характеристики веб-страницы (когда была создана, кто её автор).

    Различие между данными и метаданными

    Как их отличают? Дело в том, что провести однозначное разделение обычно невозможно. Почему? Давайте рассмотрим более детально на примере:

    1. Что-то может выступать в обеих ролях. Например, заголовок статьи может рассматриваться и как элемент метаданных, и в качестве информации, что передаётся читателю.
    2. Возможность меняться местами. Допустим, кто-то написал стихотворное произведение. Оно представляет собой данные. Композитор, опираясь на слова, создал музыкальную композицию и прикрепил данный текст. В таком случае он превращается в метаданные. Всё зависит от использования. Вообще, подобные случаи возможны из-за восприятия определённой точки зрения на основании своих суждений (тут играет роль пространство имён и система отсчёта).
    3. Возможность создания мета-…-метаданных ориентируясь на аксиому выбора. Это вытекает из того, что почти на любую информацию может быть создана своя система характеристик.

    Метаданные файлов в компьютерах

    Своё применение они нашли и в автоматизированных рабочих потоках. Если какая-то программа умеет работать с содержимым и то они могут быть преобразованы в другой тип информации, что позволяет освобождать пользователей от множества неудобных и рутинных действий.

    Примером могут служить разработки, которые позволяют просматривать графические изображения с разными расширениями. Также можно вспомнить и о различных записях звука, фильмов и многих других вещах.

    Метаданные в мировой сети

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

    Классификация метаданных

    Как их различают? В основном классификация проводится по одному из двух принципов:

    1. Содержание. Метаданные используются, чтобы описывать файл, ресурс или его содержимое (к примеру, заголовок - «как готовить картошку»).
    2. По принадлежности. Метаданные могу использовать, чтобы информировать о чем-то целом или его составляющей. Так, название фильма относится ко всему нему, а описание эпизода информирует только об определенной части.

    Если метаданные - это совокупность зависимостей от возможностей логического вывода, то в таком случае они делятся на 3 вида:

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

    Такие типы метаданных существуют.

    Три наиболее востребованных класса

    Предлагаем ознакомиться с тремя классами, которые сейчас широко применяются:

    1. Внутренние метаданные. Это информация, которая описывает составные части вещей, их структуру и что она собой представляет. В качестве примера можно привести размер и формат файла.
    2. Административные метаданные. Требуются для процессов обработки информации, а также для назначения вещи. Например, кто автор, редактор, когда был создан файл.
    3. Описательные метаданные. Используются, чтобы охарактеризовать природу файла и его признаки (к какой категории относится, с чем ещё связан).

    Формат метаданных

    Так называют стандарт, который используется, чтобы проводить формальное описание какой-то категории ресурсов (сущностей, объектов и тому подобного).

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

    Возможные проблемы

    Когда может возникать ошибка метаданных? Отсутствие необходимой информации или ограничение доступа - вот основные причины возникающих проблем.

    Также ошибка загрузки метаданных появляется в тех случаях, когда файл есть, но он повреждён. Основных причин такого состояния насчитывают три: износ техники, вредоносное влияние отдельных программ (как правило, компьютерных вирусов) и неправильное завершение работы с документом, по причине чего данные сохранились некорректно.

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

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

    Из программы на языке 1С доступен список метаданных 1С и их свойства.

    Это удобно, когда требуется получить список документов в конфигурации или отработать все реквизиты документа.

    Рассмотрим, как работать с метаданными 1С конфигурации из языка 1С.

    Метаданные 1С конфигурации

    Глобальная переменная Метаданные дает доступ к метаданным 1С всей конфигурации (т.е. к «корню» конфигурации). Далее через точку можно обращаться к «коллекциям» — документы, справочники и т.п., чтобы выйти на конкретный справочник или документ, у которых соответственно есть «коллекции» реквизиты, табличные части и т.п. – все, как в конфигураторе, в дереве конфигурации.

    Пример – создадим список всех документов конфигурации для того, чтобы пользователь мог выбрать нужный документ из списка:
    спДокументовКонфигурации = Новый СписокЗначений(); //сюда будем сохранять список

    //Метаданные - глобальная переменная, которая дает доступ ко всем метаданным 1С конфигурации
    //Метаданные.Документы - коллекция документов конфигурации
    Для каждого Документ из Метаданные.Документы Цикл
    //Документ - это метаданные 1С документа (каждого, так как мы обходим их в цикле)
    //.Имя - наименование документа так, как оно задано в конфигурации
    //.Синоним - "человеческое" наименование документа, которое отображается пользователю
    //список значений может хранить значение (имя документа) и "представление для пользователя" (как раз - синоним документа)
    спДокументовКонфигурации.Добавить(Документ.Имя, Документ.Синоним);
    КонецЦикла;

    //даем возможность пользователю выбрать из списка нужный документ
    элДокумент = спДокументовКонфигурации.ВыбратьЭлемент();

    //если пользователь нажал "Отмена", то результатом выбора будет значение НЕОПРЕДЕЛЕНО, иначе результатом будет - выбранный элемент
    Если элДокумент Неопределено Тогда
    //в.Значение списка значений мы записывали имя документа "как в конфигурации"
    //создадим новый документ с таким именем, напомним - к документам можно обращаться Документы.ИмяДокумента или Документы[ИмяДокумента]
    обДокумент = Документы[элДокумент.Значение].СоздатьДокумент();
    //ДокументОбъект.ПолучитьФорму() - возвращает форму с указанным именем, а если имя не указано - то форму "по-умолчанию"
    обДокумент.ПолучитьФорму().Открыть();
    КонецЕсли;

    Пример – для общего журнала документов (отображающего все виды документов) создадим запрос, который вернет список всех документов:

    Метаданные 1С объекта

    Большинство объектов 1С, сохраняемых в базе данных (справочники, документы и т.д.) представлены ссылками и объектами (подробнее см. «Ссылки и объекты»).

    У ссылок и объектов есть метод.Метаданные(), который позволяет выйти на метаданные 1С этого объекта.

    Пример – проверка на наличие реквизитов с типом «Справочник.Организация» в документе и обнуление значения этих реквизитов:
    //ДокументОбъект - документ, полученный на изменение или создание
    //аналогичным образом можно работать со ссылками, например: ДокументСсылка = Документ.ИмяДокумента.ПустаяСсылка().Метаданные()
    ДокументОбъект = Документы.ПоступлениеТоваров.СоздатьДокумент();

    //цикл по реквизитам
    Для каждого Реквизит из ДокументОбъект.Метаданные().Реквизиты Цикл
    //у каждого реквизита может быть как один, так и несколько типов, подробнее см. "ОписаниеТипов"

    //проверяем по каждому типу - тот ли это нужный нам?


    //обнуляем реквизит с этим именем в документе
    //для "обнуления" можно приравнивать его к Неопределено,
    //по факту значение будет установлено не Неопределено, а "пустое значение" типа реквизита
    //Неопределено только если у реквизита несколько типов
    ДокументОбъект[Реквизит.Имя] = Неопределено;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;

    //цикл по табличным частям
    Для каждого ТабЧасть из ДокументОбъект.Метаданные().ТабличныеЧасти Цикл
    //в табличной части тоже реквизиты (колонки таб.части)
    Для каждого Реквизит из ТабЧасть.Реквизиты Цикл
    //здесь аналогично
    мТипов = Реквизит.Тип.Типы();
    Для каждого Тип из мТипов Цикл
    Если Тип = Тип("СправочникСсылка.Организации") Тогда
    //так как это таб.часть, то мы должны пройтись по всем строкам этой тач. части
    Для каждого Строка из ДокументОбъект[ТабЧасть.Имя] Цикл
    Строка[Реквизит.Имя] = Неопределено;
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;