Используется для обращения к метаданным объекта конфигурации - параметр сеанса.
Полное описание, параметры и ограничения
ОбъектМетаданных: ПараметрСеанса (MetadataObject: SessionParameter)
ОбъектМетаданных: ПараметрСеанса (MetadataObject: SessionParameter)
Доступен, начиная с версии 8.1.
Свойства:
Имя (Name)
Комментарий (Comment)
ОбъектРасширяемойКонфигурации (ExtendedConfigurationObject)
ПринадлежностьОбъекта (ObjectBelonging)
Синоним (Synonym)
Тип (Type)
Методы:
ЕстьИзмененияРасширениямиКонфигурации (ChangedByConfigurationExtensions)
ПолноеИмя (FullName)
Представление (Presentation)
РасширениеКонфигурации (ConfigurationExtension)
Родитель (Parent)
Описание:
Используется для обращения к метаданным объекта конфигурации - параметр сеанса.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Разобрать схему разделителя, не менять область данных сеанса
На ОбластьДанныхВспомогательныеДанные читаем ссылки на параметры сеанса и условную константу, но не значения этих параметров.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
Описание = Метаданные.ОбщиеРеквизиты.Найти("ОбластьДанныхВспомогательныеДанные");
Если Описание = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует ОбщиеРеквизиты.ОбластьДанныхВспомогательныеДанные";
КонецЕсли;
Сообщить("Разделение данных: " + Строка(Описание.РазделениеДанных));
Сообщить("Уровень разделения: " + Строка(Описание.ИспользованиеРазделяемыхДанных));
ПараметрЗначения = Описание.ЗначениеРазделенияДанных;
Если ПараметрЗначения <> Неопределено Тогда
Сообщить("Параметр значения: " + ПараметрЗначения.ПолноеИмя());
КонецЕсли;
ПараметрИспользования = Описание.ИспользованиеРазделенияДанных;
Если ПараметрИспользования <> Неопределено Тогда
Сообщить("Параметр использования: " + ПараметрИспользования.ПолноеИмя());
КонецЕсли;
Условие = Описание.УсловноеРазделение;
Если Условие <> Неопределено Тогда
Сообщить("Условная константа: " + Условие.ПолноеИмя());
КонецЕсли;Разбор по шагам
РазделениеДанных и ИспользованиеРазделяемыхДанных описывают механизм схемы.
ЗначениеРазделенияДанных здесь возвращает описание параметра сеанса, не номер текущей области.
ИспользованиеРазделенияДанных тоже описание параметра; УсловноеРазделение — описание константы.
ПараметрыСеанса и менеджер констант в коде не используются: область и условие не меняем.
Как проверить результат
В данном XML указаны ОбластьДанныхЗначение, ОбластьДанныхИспользование и ИспользоватьРазделениеПоОбластямДанных; сравните полные имена в текущей копии.
В выводе нет фактического номера области, значения параметров или содержимого разделённых записей.
Ожидаемый результат
Построены связи разделителя с настройками сеанса и условной константой.
На что обратить внимание
Переключать разделитель в рабочем сеансе ради получения доступа к данным нельзя.
Наличие ссылок не является доказательством правильной изоляции: нужны отдельные проверки в контролируемой копии.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Проверить тип параметра, не читая пользователя сеанса
АвторизованныйПользователь допускает две разновидности ссылок. Пустая ссылка подходит по типу, но не означает авторизации.
Где и как запускать
Полный серверный модуль учебной копии КА2 Progress 2.5.20.75; чтение метаданных и собственная память.
Подготовка
Отдельная учебная копия КА2 Progress 2.5.20.75 из C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS, платформа 8.5.1.1343. Не рабочая база и не произвольная другая КА2.
Создайте серверный общий модуль УчебныеПаспортаМетаданных. Вставьте полный текст одного урока и вызовите УчебныеПаспортаМетаданных.ВыполнитьПример() из своей учебной команды.
Источники: CommandGroups\Документы.xml; Catalogs\Номенклатура.xml; XDTOPackages\Адрес.xml и Адрес\Ext\Package.bin; SessionParameters\АвторизованныйПользователь.xml.
Исходники и база не меняются. Код не выполняет команды интерфейса, не заполняет параметры настоящего сеанса, не отправляет адрес и не читает персональные данные пользователя.
URI пакета является идентификатором уже установленного XDTO, не адресом для HTTP-запроса. Учебный город и улица вымышленные, объект XDTO создаётся только в памяти.
Активные расширения и язык представлений могут менять сведения. Диагностические строки о расширениях не имеют фиксированного ожидаемого значения.
Процедура ВыполнитьПример() Экспорт
Параметр = Метаданные.ПараметрыСеанса.Найти("АвторизованныйПользователь");
Если Параметр = Неопределено Тогда
ВызватьИсключение "Нет подтверждённого параметра АвторизованныйПользователь";
КонецЕсли;
ОписаниеТипа = Параметр.Тип;
Сообщить(Параметр.Имя = "АвторизованныйПользователь");
Сообщить(ОписаниеТипа.СодержитТип(Тип("СправочникСсылка.Пользователи")));
Сообщить(ОписаниеТипа.СодержитТип(Тип("СправочникСсылка.ВнешниеПользователи")));
Сообщить(НЕ ОписаниеТипа.СодержитТип(Тип("Строка")));
Проба = Справочники.Пользователи.ПустаяСсылка();
Сообщить(ОписаниеТипа.СодержитТип(ТипЗнч(Проба)));
Сообщить(НЕ ЗначениеЗаполнено(Проба));
Сообщить("Допустимый тип не означает заполненного или авторизованного пользователя.");
Сообщить(Параметр.Синоним);
Сообщить(Параметр.Комментарий);
Сообщить(Параметр.ПолноеИмя());
Сообщить(Параметр.Представление());
Сообщить(Параметр.ПринадлежностьОбъекта);
Сообщить(ТипЗнч(Параметр.ОбъектРасширяемойКонфигурации));
Сообщить(Параметр.ЕстьИзмененияРасширениямиКонфигурации());
Сообщить(ТипЗнч(Параметр.РасширениеКонфигурации()));
Сообщить(Параметр.Родитель() = Метаданные);
КонецПроцедурыРазбор по шагам
Прочитать метаданные параметра и его ОписаниеТипов. Не обращаться к значению ПараметрыСеанса.АвторизованныйПользователь.
Проверить наличие типов ссылок Пользователи и ВнешниеПользователи и отсутствие типа Строка.
Получить собственное пустое значение ПустаяСсылка: чтение записи справочника не требуется.
Сравнить тип пробы с допустимым описанием, затем отдельно проверить заполненность. Вывести паспорт метаданных, не назначая значение сеансу.
Как проверить результат
Семь фиксированных проверок дают Истина; прочие сообщения диагностические.
Пустая ссылка допустима по типу, но ЗначениеЗаполнено возвращает Ложь. Никаких данных настоящего пользователя не выведено.
Ожидаемый результат
Практическая проверка контракта параметра и различия типа/заполненности.
На что обратить внимание
Допустимый тип не доказывает прав доступа или авторизации.
Чтение настоящего параметра может запускать его инициализацию; для этой проверки оно не нужно.
Не записывайте пустую ссылку в рабочий параметр сеанса по учебному примеру.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.