Получает количество объектов описания метаданных, входящих в коллекцию.
Синтаксис
Количество()Полное описание, параметры и ограничения
КоллекцияЗначенийСвойстваОбъектаМетаданных.Количество (MetadataObjectPropertyValueCollection.Count)
КоллекцияЗначенийСвойстваОбъектаМетаданных (MetadataObjectPropertyValueCollection)
Количество (Count)
Доступен, начиная с версии 8.0.
Синтаксис:
Количество()
Возвращаемое значение:
Тип: Число.
Описание:
Получает количество объектов описания метаданных, входящих в коллекцию.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Проверить состав справочника и настройки блокировки без блокирования
Стандартные поля, собственные реквизиты и табличные части — разные коллекции. Настройки блокировки читаем отдельно от выполнения реальной блокировки.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.
Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.
Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.
Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.
Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.
Все проверки этого блока только читают метаданные собственного справочника. Изменения настроек из подготовки выполняйте вручную в Конфигураторе только новой базы Учебная85, затем обновляйте конфигурацию БД.
Не устанавливайте расширения в учебную базу и не создавайте дополнительные индексы, характеристики, команды или макеты, если конкретное упражнение этого не требует.
Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
КонецЕсли;
Описание = Метаданные.Справочники.УчебныеТовары;
ЕстьКод = Ложь;
ЕстьНаименование = Ложь;
Для Каждого Стандартный Из Описание.СтандартныеРеквизиты Цикл
Если Стандартный.Имя = "Код" Тогда
ЕстьКод = Истина;
КонецЕсли;
Если Стандартный.Имя = "Наименование" Тогда
ЕстьНаименование = Истина;
КонецЕсли;
КонецЦикла;
Сообщить(ЕстьКод);
Сообщить(ЕстьНаименование);
Сообщить(Описание.Реквизиты.Найти("Артикул") <> Неопределено);
Сообщить(Описание.ТабличныеЧасти.Найти("Штрихкоды") <> Неопределено);
Сообщить(Описание.ВводитсяНаОсновании.Количество() = 0);
Сообщить(Описание.ДополнительныеИндексы.Количество() = 0);
Сообщить(Описание.Характеристики.Количество() = 0);
Сообщить(Описание.Команды.Количество() = 0);
Сообщить(Описание.Макеты.Количество() = 0);
Сообщить("Число полей блокировки: " + Строка(Описание.ПоляБлокировкиДанных.Количество()));
Сообщить("Режим управления блокировкой: " + Строка(Описание.РежимУправленияБлокировкойДанных));Разбор по шагам
Код/Наименование проверяем обходом описаний стандартных реквизитов: у этой коллекции нет Найти. Артикул ищем в обычных реквизитах, Штрихкоды — в табличных частях.
Пустые ВводитсяНаОсновании, Характеристики, Команды и Макеты ожидаются именно в подготовленном маленьком справочнике.
ДополнительныеИндексы — явно заданные дополнительные индексы. Ноль не означает отсутствие стандартных индексов или индексации Артикул.
ПоляБлокировкиДанных и РежимУправленияБлокировкойДанных — описание схемы. Код не начинает транзакцию и не блокирует товар.
Как проверить результат
Девять проверок дают Истина.
Последние два сообщения показывают фактическую политику блокировки. Записанных товаров для этой проверки не нужно.
Ожидаемый результат
Проверка структуры перед импортом без чтения/изменения бизнес-данных.
На что обратить внимание
Коллекция стандартных реквизитов не равна реквизитам экземпляра объекта в памяти.
Чтение настроек блокировки не доказывает отсутствие конкуренции пользователей и не заменяет корректную транзакцию.
Подготовка запрещает добавлять свои команды/макеты: иначе ожидаемые нули должны быть пересмотрены, а не скрыты.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Проверить участие реквизита Партнер реализации в критерии
Состав содержит описания полей, а не документы. По предоставленному XML у критерия 61 источник, включая Партнер документа РеализацияТоваровУслуг.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
Описание = Метаданные.КритерииОтбора.Найти("ДокументыПоПартнеру");
Если Описание = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует КритерииОтбора.ДокументыПоПартнеру";
КонецЕсли;
Реализация = Метаданные.Документы.Найти("РеализацияТоваровУслуг");
Если Реализация = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует Документы.РеализацияТоваровУслуг";
КонецЕсли;
ПолеПартнера = Реализация.Реквизиты.Найти("Партнер");
Если ПолеПартнера = Неопределено Тогда
ВызватьИсключение "В учебной реализации ожидался реквизит Партнер";
КонецЕсли;
Сообщить(Описание.Состав.Количество() = 61);
Сообщить(Описание.Состав.Содержит(ПолеПартнера));
Сообщить(ПолеПартнера.Родитель() = Реализация);
Сообщить(ПолеПартнера.Тип.СодержитТип(Тип("СправочникСсылка.Партнеры")));
Сообщить(ПолеПартнера.ПолноеИмя());
Для Каждого Источник Из Описание.Состав Цикл
Сообщить(Источник.ПолноеИмя());
КонецЦикла;Разбор по шагам
Документ ищем в Метаданные.Документы, не создаём ДокументОбъект.
Реквизит ищем в схеме реализации и проверяем до чтения типа/родителя.
Содержит сравнивает конкретное описание поля; строка имени Партнер не заменяет это описание.
Перечень Состав выводит полные имена 61 описания источников, не количество реализаций партнёра.
Как проверить результат
Четыре сравнения Истина по XML: источников 61, участие поля, его родитель и ссылочный тип.
После полного имени поля выводятся 61 имя источника; персональные/торговые данные документов не получены.
Ожидаемый результат
Подтверждено участие конкретного реквизита в схеме критерия.
На что обратить внимание
Число 61 нельзя использовать как количество связанных документов.
Если расширение добавило источник, фактическое количество изменится: это не само по себе ошибка платформы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.