ОбъектМетаданных: ШаблонURLHTTPСервиса.Родитель

Методы · Parent

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

Синтаксис

Родитель()

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

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

ОбъектМетаданных: ШаблонURLHTTPСервиса.Родитель (MetadataObject: HTTPServiceURLTemplate.Parent)

ОбъектМетаданных: ШаблонURLHTTPСервиса (MetadataObject: HTTPServiceURLTemplate)

Родитель (Parent)

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

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

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

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

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

Пример:

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

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

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

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

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

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

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

Найти обработчики GET и POST одного пути

Одинаковый URL имеет два разных метода и две разные функции сервиса. Имя метода метаданных и тип HTTPМетод проверяются отдельно.

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

Полный серверный модуль учебной копии КА2 Progress 2.5.20.75; без HTTP, публикации и печати.

Подготовка

  1. Изолированная учебная копия КА2 Progress 2.5.20.75 из C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS, платформа 8.5.1.1343. Создайте серверный общий модуль УчебныеМаршрутыИМакеты.

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

  3. Источники: HTTPServices\ПередачаДанных.xml и ПередачаДанных\Ext\Module.bsl; Documents\РеализацияТоваровУслуг\Templates\ПФ_MXL_РеализацияТоваров.xml.

  4. Метаданные только читаются. HTTP-запросы, публикация сервиса, загрузка/удаление файлов хранилища и печать документов не выполняются.

  5. Формируемый путь с guide-owned-storage — учебная строка, не действующий адрес публикации. GET/POST обработчики могут выполнять прикладную работу и здесь не вызываются.

  6. Макет печати получается в память без создания документа реализации и без заполнения его данными. Чтение размера макета не доказывает корректность настоящей печатной формы.

Процедура ВыполнитьПример() Экспорт
    Сервис = Метаданные.HTTPСервисы.Найти("ПередачаДанных");
    Если Сервис = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённого HTTP-сервиса ПередачаДанных";
    КонецЕсли;
    Шаблон = Сервис.ШаблоныURL.Найти("ХранилищеИИдентификатор");
    Если Шаблон = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённого шаблона ХранилищеИИдентификатор";
    КонецЕсли;
    GETМетод = Шаблон.Методы.Найти("GET");
    POSTМетод = Шаблон.Методы.Найти("POST");
    Если GETМетод = Неопределено ИЛИ POSTМетод = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённых GET/POST методов";
    КонецЕсли;
    Сообщить(GETМетод.HTTPМетод = Метаданные.СвойстваОбъектов.HTTPМетод.GET);
    Сообщить(POSTМетод.HTTPМетод = Метаданные.СвойстваОбъектов.HTTPМетод.POST);
    Сообщить(GETМетод.Обработчик = "ХранилищеИИдентификаторGETЗапрос");
    Сообщить(POSTМетод.Обработчик = "ХранилищеИИдентификаторPOSTЗапрос");
    Сообщить(Сервис.Модуль = Неопределено);
    Сообщить("Посмотрите исходный модуль HTTPServices/ПередачаДанных/Ext/Module.bsl. Обработчики здесь НЕ вызываются.");
    Сообщить(Шаблон.Синоним);
    Сообщить(Шаблон.Комментарий);
    Сообщить(Шаблон.ПолноеИмя());
    Сообщить(Шаблон.Представление());
    Сообщить(Шаблон.ПринадлежностьОбъекта);
    Сообщить(ТипЗнч(Шаблон.ОбъектРасширяемойКонфигурации));
    Сообщить(Шаблон.ЕстьИзмененияРасширениямиКонфигурации());
    Сообщить(ТипЗнч(Шаблон.РасширениеКонфигурации()));
    Сообщить(Шаблон.Родитель() = Сервис);

КонецПроцедуры

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

  1. Внутри Шаблон.Методы найти GET и POST по именам.

  2. Сравнить их HTTPМетод с реальным перечислением, а Обработчик — с исходными строками.

  3. Открыть исходный Module.bsl вручную: обе функции принимают Запрос. Это входящий HTTPСервисЗапрос, не объект SQL Запрос.

  4. Не вызывать функции и не отправлять GET/POST. Урок заканчивается чтением метаданных маршрута.

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

  1. Шесть фиксированных проверок дают Истина, остальное диагностическое.

  2. В Module.bsl находятся ХранилищеИИдентификаторGETЗапрос(Запрос) и POSTЗапрос(Запрос). Экспорт по этому примеру не требуется и не добавляется.

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

Полный образец поиска точки обработки HTTP без исполнения прикладного кода.

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

  1. Даже GET может иметь прикладные побочные эффекты: чтение метаданных не является разрешением его вызывать.

  2. В модуле HTTP-сервиса обработчик не обязательно объявлен Экспорт.

  3. Проверка имён не доказывает правильность авторизации или поведения обработчика.

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

Собрать учебный путь по шаблону URL

Подставляем только собственные ASCII-метки в storage/{Storage}/{ID}. Путь остаётся строкой, запрос не отправляется.

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

Полный серверный модуль учебной копии КА2 Progress 2.5.20.75; без HTTP, публикации и печати.

Подготовка

  1. Изолированная учебная копия КА2 Progress 2.5.20.75 из C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS, платформа 8.5.1.1343. Создайте серверный общий модуль УчебныеМаршрутыИМакеты.

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

  3. Источники: HTTPServices\ПередачаДанных.xml и ПередачаДанных\Ext\Module.bsl; Documents\РеализацияТоваровУслуг\Templates\ПФ_MXL_РеализацияТоваров.xml.

  4. Метаданные только читаются. HTTP-запросы, публикация сервиса, загрузка/удаление файлов хранилища и печать документов не выполняются.

  5. Формируемый путь с guide-owned-storage — учебная строка, не действующий адрес публикации. GET/POST обработчики могут выполнять прикладную работу и здесь не вызываются.

  6. Макет печати получается в память без создания документа реализации и без заполнения его данными. Чтение размера макета не доказывает корректность настоящей печатной формы.

Процедура ВыполнитьПример() Экспорт
    Сервис = Метаданные.HTTPСервисы.Найти("ПередачаДанных");
    Если Сервис = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённого HTTP-сервиса ПередачаДанных";
    КонецЕсли;
    Шаблон = Сервис.ШаблоныURL.Найти("ХранилищеИИдентификатор");
    Если Шаблон = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённого шаблона ХранилищеИИдентификатор";
    КонецЕсли;
    Сообщить(Шаблон.Имя = "ХранилищеИИдентификатор");
    Сообщить(Шаблон.Шаблон = "/storage/{Storage}/{ID}");
    Сообщить(Шаблон.Методы.Количество() = 2);
    Путь = СтрЗаменить(Шаблон.Шаблон, "{Storage}", "guide-owned-storage");
    Путь = СтрЗаменить(Путь, "{ID}", "00000000-0000-0000-0000-000000000001");
    ОтносительныйURL = "/hs/" + Сервис.КорневойURL + Путь;
    Сообщить(ОтносительныйURL = "/hs/dt/storage/guide-owned-storage/00000000-0000-0000-0000-000000000001");
    Сообщить(ОтносительныйURL);
    Сообщить(Шаблон.Синоним);
    Сообщить(Шаблон.Комментарий);
    Сообщить(Шаблон.ПолноеИмя());
    Сообщить(Шаблон.Представление());
    Сообщить(Шаблон.ПринадлежностьОбъекта);
    Сообщить(ТипЗнч(Шаблон.ОбъектРасширяемойКонфигурации));
    Сообщить(Шаблон.ЕстьИзмененияРасширениямиКонфигурации());
    Сообщить(ТипЗнч(Шаблон.РасширениеКонфигурации()));
    Сообщить(Шаблон.Родитель() = Сервис);

КонецПроцедуры

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

  1. Найти шаблон внутри подтверждённого сервиса.

  2. Проверить его исходную строку и два метода.

  3. Заменить два именованных параметра собственными заранее заданными ASCII-значениями и добавить /hs/dt.

  4. Вывести точный относительный путь. Родитель шаблона — сервис, не корень конфигурации.

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

  1. Пять фиксированных проверок дают Истина.

  2. Получается /hs/dt/storage/guide-owned-storage/00000000-0000-0000-0000-000000000001. Имени реальной публикации и сетевого вызова нет.

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

Конкретный пример разбора шаблона и формирования собственного относительного пути.

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

  1. Для внешних значений требуется корректное кодирование сегментов URL: этот образец использует только безопасные фиксированные ASCII-метки.

  2. Не подставляйте произвольные /, ?, # в сегменты простой заменой.

  3. Наличие шаблона не доказывает, что пользователь имеет доступ к хранилищу.

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

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

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

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

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