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