КоллекцияОбъектовМетаданных.Содержит

Методы · Contains

Определяет, принадлежит ли объект метаданных данной коллекции.

Синтаксис

Содержит(<ОбъектМетаданных>)
Полное описание, параметры и ограничения

КоллекцияОбъектовМетаданных.Содержит (MetadataObjectCollection.Contains)

КоллекцияОбъектовМетаданных (MetadataObjectCollection)

Содержит (Contains)

Доступен, начиная с версии 8.0.

Синтаксис:
Содержит(<ОбъектМетаданных>)
Параметры:

<ОбъектМетаданных> (обязательный)
Тип: ОбъектМетаданных: ОпределяемыйТип, ОбъектМетаданных: Куб, ОбъектМетаданных: ТаблицаИзмерения, ОбъектМетаданных: ВнешнийИсточникДанных, ОбъектМетаданных: Поле, ОбъектМетаданных: Таблица, ОбъектМетаданных: HTTPСервис, ОбъектМетаданных: Функция, ОбъектМетаданных: ШаблонURLHTTPСервиса, ОбъектМетаданных: Бот, ОбъектМетаданных: WebSocketКлиент, ОбъектМетаданных: ПланВидовРасчета, ОбъектМетаданных: ПланСчетов, ОбъектМетаданных: БизнесПроцесс, ОбъектМетаданных: Документ, ОбъектМетаданных: ЖурналДокументов, ОбъектМетаданных: Задача, ОбъектМетаданных: ПланВидовХарактеристик, ОбъектМетаданных: ПланОбмена, ОбъектМетаданных: РегистрБухгалтерии, ОбъектМетаданных: РегистрНакопления, ОбъектМетаданных: РегистрРасчета, ОбъектМетаданных: РегистрСведений, ОбъектМетаданных: Справочник, ОбъектМетаданных: ФункциональнаяОпция, ОбъектМетаданных: ПараметрФункциональныхОпций, ОбъектМетаданных: Команда, ОбъектМетаданных: ГруппаКоманд, ОбъектМетаданных: ХранилищеНастроек, ОбъектМетаданных: ОбщаяКоманда, ОбъектМетаданных: ЦветПалитры, ОбъектМетаданных: СервисИнтеграции, ОбъектМетаданных: WebСервис, ОбъектМетаданных: WSСсылка, ОбъектМетаданных: Интерфейс, ОбъектМетаданных: Константа, ОбъектМетаданных: КритерийОтбора, ОбъектМетаданных: Нумератор, ОбъектМетаданных: Обработка, ОбъектМетаданных: ОбщаяКартинка, ОбъектМетаданных: Макет, ОбъектМетаданных: ОбщийМодуль, ОбъектМетаданных: Форма, ОбъектМетаданных: Стиль, ОбъектМетаданных: Язык, ОбъектМетаданных: Отчет, ОбъектМетаданных: ПакетXDTO, ОбъектМетаданных: ПараметрСеанса, ОбъектМетаданных: Перечисление, ОбъектМетаданных: ПодпискаНаСобытие, ОбъектМетаданных: Подсистема, ОбъектМетаданных: Последовательность, ОбъектМетаданных: РегламентноеЗадание, ОбъектМетаданных: Роль, ОбъектМетаданных: ЭлементСтиля, ОбъектМетаданных: Графа, ОбъектМетаданных: Измерение, ОбъектМетаданных: ЗначениеПеречисления, ОбъектМетаданных: ОперацияWebСервиса, ОбъектМетаданных: Перерасчет, ОбъектМетаданных: ПараметрWebСервиса, ОбъектМетаданных: ПризнакУчетаПланаСчетов, ОбъектМетаданных: ПризнакУчетаСубконтоПланаСчетов, ОбъектМетаданных: Реквизит, ОбъектМетаданных: ТабличнаяЧасть, ОбъектМетаданных: Ресурс, ОбъектМетаданных: РеквизитАдресации, ОбъектМетаданных: КаналСервисаИнтеграции, ОбъектМетаданных: ОбщийРеквизит.
Объект метаданных, наличие которого определяется в коллекции.
Возвращаемое значение:
Тип: Булево.

Описание:

Определяет, принадлежит ли объект метаданных данной коллекции.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

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

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Составить паспорт конфигурации перед интеграцией

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

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

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

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.


Сообщить(СтрШаблон("Конфигурация: %1 (%2)", Метаданные.Имя, Метаданные.Синоним));
Сообщить("Версия конфигурации: " + Метаданные.Версия);
Сообщить("Поставщик: " + Метаданные.Поставщик);
Сообщить(Метаданные.РежимСовместимости);
Сообщить(Метаданные.Комментарий);
Сообщить(СтрШаблон("Справочников: %1; документов: %2; регистров сведений: %3; общих модулей: %4",
    Метаданные.Справочники.Количество(), Метаданные.Документы.Количество(),
    Метаданные.РегистрыСведений.Количество(), Метаданные.ОбщиеМодули.Количество()));
Сообщить(Метаданные.ЕстьИзмененияРасширениямиКонфигурации());
Описание = Метаданные.НайтиПоПолномуИмени("Справочник.Номенклатура");
Если Описание = Неопределено Тогда
    Сообщить("Справочник.Номенклатура отсутствует — проверьте выбранную конфигурацию");
Иначе
    ПоТипу = Метаданные.НайтиПоТипу(Тип("СправочникСсылка.Номенклатура"));
    Сообщить(Описание = ПоТипу);
    Сообщить(Метаданные.Справочники.Содержит(Описание));
    Индекс = Метаданные.Справочники.Индекс(Описание);
    Сообщить(Индекс);
    Сообщить(Метаданные.Справочники.Получить(Индекс) = Описание);
КонецЕсли;

Разбор по шагам

  1. Читаем имя и версию конфигурации: это не номер версии платформы 1С.

  2. Количество считает описания объектов метаданных, а не количество товаров или документов в базе.

  3. Поиск по полному имени использует Справочник.Номенклатура; по типу — СправочникСсылка.Номенклатура. Это разные строки.

  4. Проверяем принадлежность коллекции и обратный доступ по найденному индексу. При отсутствии справочника не обращаемся к несуществующему типу.

Как проверить результат

  1. Имя и версия совпадают с корневым объектом конфигурации в Конфигураторе, а не с 8.5.1.1343.

  2. В конфигурации с Номенклатурой три сравнения дают Истина; индекс неотрицательный.

  3. Измените полное имя на Справочник.УчебныйОтсутствующий: получите сообщение об отсутствии, а не ошибку обращения к свойству Неопределено.

Ожидаемый результат

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

На что обратить внимание

  1. Наличие метаданных не доказывает, что текущему пользователю разрешено читать все данные соответствующего объекта.

  2. ЕстьИзмененияРасширениямиКонфигурации сообщает об изменениях структуры расширениями; это не признак ошибки и не проверка бизнес-логики.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Найти главную схему СКД и назначения хранилищ отчёта

Главная схема — описание макета, а хранилища описывают механизм сохранения настроек. Ни выборка остатков, ни чтение пользовательских вариантов не выполняются.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

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

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.

  3. Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.

  4. В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.

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

Отчет = Метаданные.Отчеты.Найти("АнализОстатковТоваровОрганизаций");
Если Отчет = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует Отчеты.АнализОстатковТоваровОрганизаций";
КонецЕсли;
Обработка = Метаданные.Обработки.Найти("ВводКонтактнойИнформации");
Если Обработка = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует Обработки.ВводКонтактнойИнформации";
КонецЕсли;
Схема = Отчет.ОсновнаяСхемаКомпоновкиДанных;
Если Схема = Неопределено Тогда
    Сообщить("Основная схема не назначена");
Иначе
    Сообщить(Схема.ПолноеИмя());
    Сообщить(Отчет.Макеты.Содержит(Схема));
    Сообщить(Схема.Имя = "ОсновнаяСхемаКомпоновкиДанных");
КонецЕсли;
Хранилища = Новый Массив;
Хранилища.Добавить(Отчет.ХранилищеВариантов);
Хранилища.Добавить(Отчет.ХранилищеНастроек);
Для Каждого Хранилище Из Хранилища Цикл
    Если Хранилище = Неопределено Тогда
        Сообщить("Собственное хранилище явно не назначено; изучите стандартный механизм");
    Иначе
        Сообщить("Назначенное хранилище: " + Хранилище.ПолноеИмя());
    КонецЕсли;
КонецЦикла;

Разбор по шагам

  1. Получаем описание главного макета и проверяем наличие до чтения имени.

  2. Содержит проверяет принадлежность Макеты; не загружает схему и не формирует отчёт.

  3. Варианты отчёта и пользовательские настройки имеют разные назначения хранилищ.

  4. Неназначенное собственное хранилище не является доказательством потери сохранённых вариантов.

Как проверить результат

  1. По XML оба сравнения схемы Истина: макет принадлежит отчёту и имеет ожидаемое имя.

  2. В XML оба назначения хранилищ пусты; код не обращается к их методам загрузки или сохранения.

Ожидаемый результат

Найдены описание главной схемы и настройки механизмов хранения.

На что обратить внимание

  1. Не применяйте к описанию макета методы СхемаКомпоновкиДанных.

  2. Проверка метаданных не подтверждает, что запросы отчёта быстры или остатки правильны.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.