Получает объект описания метаданного, которому подчинен данный объект.
Синтаксис
Родитель()Примеры платформы
Метаданные.Документы.РасходнаяНакладная.Реквизиты.Цена.Родитель();Полное описание, параметры и ограничения
ОбъектМетаданных: Команда.Родитель (MetadataObject: Command.Parent)
ОбъектМетаданных: Команда (MetadataObject: Command)
Родитель (Parent)
Доступен, начиная с версии 8.0.
Синтаксис:
Родитель()
Описание:
Получает объект описания метаданного, которому подчинен данный объект.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Пример:
// В данном примере метод вернет значение
// Метаданные.Документы.РасходнаяНакладная
Метаданные.Документы.РасходнаяНакладная.Реквизиты.Цена.Родитель();
Использование в версии:
Доступен, начиная с версии 8.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/Конфигуратор отдельно, не исполняют строку из этого свойства.
Как проверить результат
Две первые проверки ожидаются Истина; значения локализации/расширений зависят от активной учебной копии.
Для МодульКоманды показан фактический тип либо причина недоступности. Ни один вариант не считается доказательством получения исходного кода.
Ожидаемый результат
Установлены владелец и квалифицированное имя реальной команды, отделена схема от текста и исполнения обработчика.
На что обратить внимание
ОбъектМетаданных: Команда и ОбъектМетаданных: ОбщаяКоманда — разные типы.
Диагностическая ошибка проектного свойства не должна заменяться фиктивной строкой исходного модуля.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Посмотреть собственные формы, макеты и команды журнала взаимодействий
Журнал Взаимодействия содержит 6 видов документов, 6 собственных форм, 4 макета и 15 команд. Название НаписатьЭлектронноеПисьмоПоКонтакту не является разрешением отправить письмо.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
Описание = Метаданные.ЖурналыДокументов.Найти("Взаимодействия");
Если Описание = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует ЖурналыДокументов.Взаимодействия";
КонецЕсли;
Сообщить(Описание.РегистрируемыеДокументы.Количество() = 6);
Сообщить(Описание.Формы.Количество() = 6);
Сообщить(Описание.Макеты.Количество() = 4);
Сообщить(Описание.Команды.Количество() = 15);
Команда = Описание.Команды.Найти("НаписатьЭлектронноеПисьмоПоКонтакту");
Если Команда = Неопределено Тогда
ВызватьИсключение "В вашей учебной копии нет ожидаемой команды";
КонецЕсли;
Сообщить(Команда.Имя = "НаписатьЭлектронноеПисьмоПоКонтакту");
Сообщить(Команда.Родитель() = Описание);
Сообщить(Команда.Представление());Разбор по шагам
Считаем дочерние описания схемы, не встречи, письма, вложения или сеансы пользователей.
Команды.Найти возвращает описание команды; проверяем его наличие и принадлежность.
Представление выводим для человека. Код модуля команды и её обработчик не вызываем.
Как проверить результат
Шесть сравнений Истина по XML Progress; затем подпись найденной команды.
Письмо не сформировано и не отправлено, события календаря не созданы.
Ожидаемый результат
Проверена фактическая структура журнала взаимодействий до изучения его обработчиков.
На что обратить внимание
Количество видов документов 6 не является количеством фактических взаимодействий.
Подпись команды не описывает полностью её параметры, права и бизнес-эффекты: требуется чтение настоящего обработчика.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.