ОбъектМетаданных: Форма.Родитель

Методы · Parent

Получает объект описания метаданного, которому подчинен данный объект.

Синтаксис

Родитель()

Примеры платформы

Метаданные.Документы.РасходнаяНакладная.Реквизиты.Цена.Родитель();
Полное описание, параметры и ограничения

ОбъектМетаданных: Форма.Родитель (MetadataObject: Form.Parent)

ОбъектМетаданных: Форма (MetadataObject: Form)

Родитель (Parent)

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

Синтаксис:
Родитель()
Описание:

Получает объект описания метаданного, которому подчинен данный объект.

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

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

Пример:

// В данном примере метод вернет значение

// Метаданные.Документы.РасходнаяНакладная

Метаданные.Документы.РасходнаяНакладная.Реквизиты.Цена.Родитель();

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

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

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

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

Проверить назначенную форму списка регистра

ФормаСписка существует и назначена основной. Получение её описания не открывает журнал проводок и не выдаёт права просмотра движений.

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

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

Подготовка

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

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

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

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

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

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

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

  1. Сначала ищем собственную форму, затем сравниваем её с назначением ОсновнаяФормаСписка.

  2. Дополнительное назначение не задано в XML, а родитель найденной формы — описание регистра.

  3. Собственные Макеты/Команды пусты независимо от механизма стандартных команд; форму не открываем.

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

  1. Шесть сравнений Истина; выводится полное имя РегистрБухгалтерии.Хозрасчетный.Форма.ФормаСписка.

  2. Окно журнала не открывалось и движения не выбирались.

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

Подтверждено назначение конкретной формы из предоставленной схемы.

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

  1. Пустая коллекция Команды не означает отсутствия всех автоматически формируемых команд.

  2. В другой конфигурации список может иметь другую форму: не подменяйте имя без проверки.

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

Найти схему формы списка номенклатуры без открытия списка

Метаданные формы показывают её объявленный тип и владельца, но не текущие строки или элементы уже открытого окна.

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

Полный серверный общий модуль собственной учебной копии КА2 Progress 2.5.20.75, только чтение схемы.

Подготовка

  1. Используйте отдельную учебную копию КА2 Progress из C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS, конфигурация КомплекснаяАвтоматизация 2.5.20.75, платформа 8.5.1.1343. Это не инструкция запуска в рабочей базе.

  2. Создайте серверный общий модуль УчебныеКонтрактыИнтерфейса с флагом Сервер. Вставьте полный модуль одного урока и вызовите УчебныеКонтрактыИнтерфейса.ВыполнитьПример() из серверной учебной команды.

  3. Команды подтверждены в Catalogs\Номенклатура.xml и Documents\РеализацияТоваровУслуг.xml; форма — в Catalogs\Номенклатура\Forms\ФормаСписка.xml; нумератор — в DocumentNumerators\ДокументыРеализацииТоваров.xml.

  4. Исходники конфигурации не меняются. Код только читает метаданные и обрабатывает собственные значения в памяти: не вызывает штатную команду, не открывает форму списка, не получает новый номер и не записывает документы.

  5. При отличающейся версии или расширениях результат может отличаться от выгрузки. Сверяйте активную конфигурацию, а не исправляйте её ради зелёных сообщений.

Процедура ВыполнитьПример() Экспорт
    Каталог = Метаданные.Справочники.Найти("Номенклатура");
    Если Каталог = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённого справочника Номенклатура";
    КонецЕсли;
    ФормаМетаданных = Каталог.Формы.Найти("ФормаСписка");
    Если ФормаМетаданных = Неопределено Тогда
        ВызватьИсключение "Нет формы Номенклатура.ФормаСписка";
    КонецЕсли;
    Сообщить(ФормаМетаданных.Имя = "ФормаСписка");
    Сообщить(ФормаМетаданных.Родитель() = Каталог);
    Сообщить(ФормаМетаданных.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая);
    Сообщить(НЕ ФормаМетаданных.ВключатьСправкуВСодержание);
    Сообщить("Полное имя: " + ФормаМетаданных.ПолноеИмя());
    Сообщить("Синоним: " + ФормаМетаданных.Синоним);
    Сообщить("Представление: " + ФормаМетаданных.Представление());
    Сообщить("Комментарий заполнен: " + Строка(НЕ ПустаяСтрока(ФормаМетаданных.Комментарий)));
    Сообщить("Принадлежность: " + Строка(ФормаМетаданных.ПринадлежностьОбъекта));
    Сообщить("Тип идентификатора заимствования: " + Строка(ТипЗнч(ФормаМетаданных.ОбъектРасширяемойКонфигурации)));
    Сообщить("Изменена расширениями: " + Строка(ФормаМетаданных.ЕстьИзмененияРасширениямиКонфигурации()));
    Сообщить("Принадлежит расширению: " + Строка(ФормаМетаданных.РасширениеКонфигурации() <> Неопределено));
КонецПроцедуры

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

  1. Берём ФормаСписка из коллекции Формы именно Номенклатуры. ОбщаяФорма.ФормаСписка и форма другого справочника были бы другими объектами.

  2. XML указывает FormType=Managed и IncludeHelpInContents=false. Нативные значения сравниваются как перечисление и Булево.

  3. ПолноеИмя и Родитель устанавливают владельца. Синоним не уникален и может локализоваться.

  4. Сведения о расширениях диагностические. Сравнение схемы не доказывает, какие команды/строки видит пользователь в уже открытом экземпляре формы.

  5. Нет ОткрытьФорму/ПолучитьФорму: не запускаются события формы списка, произвольные запросы или действия её модуля.

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

  1. Четыре первые сравнения ожидаются Истина на исходной схеме, остальные значения подписаны как фактические.

  2. Список товаров не открылся. Если версия или объект отличаются, код останавливается до чтения свойств.

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

Получен паспорт настоящей схемы формы КА2 без подмены её экземпляром пользовательского окна.

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

  1. ОбъектМетаданных: Форма не имеет элементов уже открытой ФормаКлиентскогоПриложения.

  2. Наличие назначения мобильного использования в XML не доказывает корректный мобильный интерфейс или права пользователя.

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

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

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

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

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