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