Получает значения функциональной опции.
Синтаксис
ПолучитьФункциональнуюОпцию(<Имя>, <Параметры>)Полное описание, параметры и ограничения
Глобальный контекст.ПолучитьФункциональнуюОпцию (Global context.GetFunctionalOption)
Глобальный контекст (Global context)
ПолучитьФункциональнуюОпцию (GetFunctionalOption)
Доступен, начиная с версии 8.2.
Синтаксис:
ПолучитьФункциональнуюОпцию(<Имя>, <Параметры>)
Параметры:
<Имя> (обязательный)
Тип: Строка.
Имя функциональной опции в соответствии с установленными языковыми настройками.
<Параметры> (необязательный)
Тип: Структура.
Параметры функциональных опций, необходимые для получения значения функциональной опции.
Имеет смысл только для функциональных опций, источниками значения которых является реквизит справочника или ресурс регистра сведений. Для опций констант этот параметр игнорируется.
Ключ элемента структуры задает имя параметра, которое должно соответствовать имени одному из объектов метаданных типа ОбъектМетаданных: ПараметрФункциональныхОпций. Значение элемента структуры должно содержать значение параметра.
Возвращаемое значение:
Тип: Произвольный.
Описание:
Получает значения функциональной опции.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Если параметры переданы не полностью, то для функциональной опции с параметрами типа Булево учитываются отобранные для указанных параметров значения. Если хотя бы одно из них равно Истина, то и значение опции равно Истина. Для функциональной опции остальных типов генерируется исключительная ситуация.
Если параметры переданы полностью, но подходящего значения не найдено, то значение функциональной опции будет Ложь.
Если в качестве параметра функциональной опции была передана ссылка на группу, а реквизит, в котором хранится значение функциональной опции, не используется для группы, то при получении значения функциональной опции будет возращено Null.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Прочитать опцию заказов клиентов, не включать её автоматически
Для ИспользоватьЗаказыКлиентов отделяем описание хранилища от текущего значения опции. Значение читаем только в учебной копии; права и настройки не меняем.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
Описание = Метаданные.ФункциональныеОпции.Найти("ИспользоватьЗаказыКлиентов");
Если Описание = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует ФункциональныеОпции.ИспользоватьЗаказыКлиентов";
КонецЕсли;
Константа = Метаданные.Константы.Найти("ИспользоватьЗаказыКлиентов");
Если Константа = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует Константы.ИспользоватьЗаказыКлиентов";
КонецЕсли;
Если Описание.Хранение <> Константа Тогда
ВызватьИсключение "Хранилище опции отличается от учебного примера; сначала изучите текущую схему";
КонецЕсли;
Сообщить(СтрШаблон("%1 (%2): хранилище %3", Описание.Имя, Описание.Синоним, Константа.ПолноеИмя()));
Сообщить("Привилегированное получение: " + Строка(Описание.ПривилегированныйРежимПриПолучении));
Значение = ПолучитьФункциональнуюОпцию(Описание.Имя);
Если ТипЗнч(Значение) <> Тип("Булево") Тогда
ВызватьИсключение "Полученное значение не булево; не интерпретируйте его как включение заказов";
КонецЕсли;
Сообщить("Заказы клиентов по этой опции: " + Строка(Значение));Разбор по шагам
Хранение — описание метаданных, а не текущее значение константы.
Сверяем хранилище с конкретной константой до получения значения: не переносим пример на параметризованный регистр.
ПолучитьФункциональнуюОпцию читает значение по правилам платформы; вручную привилегированный режим не включаем.
Проверяем булев тип; Истина или Ложь зависят от настроек учебной базы, а не от имени опции.
Как проверить результат
В предоставленном XML хранилище — Константа.ИспользоватьЗаказыКлиентов, привилегированное получение включено. Сверьте актуальную схему.
Сравните результат с настройкой заказов клиентов в учебной базе. Значение константы не изменилось после запуска.
Ожидаемый результат
Разделены схема, фактическое значение опции и права пользователя.
На что обратить внимание
Включённая опция не гарантирует наличие прав на заказы или видимость каждой команды.
Ошибка получения не должна молча превращаться в Ложь: исправьте контекст, права или схему в отдельной диагностике.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Понять, почему параметр Организация не меняет опцию с хранением в константе
Специальный урок для опции-константы: переданный параметр игнорируется по контракту платформы. Это не образец получения параметризованной опции из регистра.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
Описание = Метаданные.ФункциональныеОпции.Найти("ИспользоватьЗаказыКлиентов");
Если Описание = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует ФункциональныеОпции.ИспользоватьЗаказыКлиентов";
КонецЕсли;
Константа = Метаданные.Константы.Найти("ИспользоватьЗаказыКлиентов");
Если Константа = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует Константы.ИспользоватьЗаказыКлиентов";
КонецЕсли;
Параметр = Метаданные.ПараметрыФункциональныхОпций.Найти("Организация");
Если Параметр = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует ПараметрыФункциональныхОпций.Организация";
КонецЕсли;
Если Описание.Хранение <> Константа Тогда
ВызватьИсключение "Этот урок предназначен только для указанной опции-константы";
КонецЕсли;
Сообщить(СтрШаблон("Параметр %1 (%2)", Параметр.Имя, Параметр.Синоним));
Сообщить("Тип описания использования: " + Строка(ТипЗнч(Параметр.Использование)));
Параметры = Новый Структура;
Параметры.Вставить(Параметр.Имя, Неопределено);
БезПараметров = ПолучитьФункциональнуюОпцию(Описание.Имя);
СПараметрами = ПолучитьФункциональнуюОпцию(Описание.Имя, Параметры);
Сообщить(БезПараметров = СПараметрами);Разбор по шагам
Параметр функциональных опций — описание конфигурации, не выбранная организация.
Использование описывает связь параметра с объектами схемы; оно не является текущим значением параметра.
Для констант параметр структуры игнорируется, поэтому намеренно передаём Неопределено только в этом специальном сравнении.
Для реквизита справочника или ресурса регистра такое значение нельзя считать корректным: там нужен настоящий параметр соответствующего типа.
Как проверить результат
В неизменяемой учебной базе оба чтения одной опции-константы дают одинаковое значение и сравнение Истина.
При изменённом хранилище код останавливается до получения опции; не переносите вывод на другие опции.
Ожидаемый результат
Показано различие между общей настройкой-константой и параметризованным хранилищем.
На что обратить внимание
Сравнение может измениться при параллельном изменении настройки: запускайте в спокойной учебной копии.
Не используйте Неопределено вместо реальной организации в параметризованной опции.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.