Функциональные опции и параметры функциональных опций. Функциональные опции (1Cv82) 1с функциональные опции что

30.03.2017

Функциональные опции 1С 8.3 (Механизм, использование)

Для начала важно отметить, что механизм функциональных опций НЕ ограничивает доступ к данным, а только лишь управляет видимостью (отображением) данных на форме. Для ограничения доступа к объектам в платформе используется механизм ролей.
Поэтому рассмотрение механизма функциональных опций начнем с описания задачи. В нашей мини-конфигурации имеется один справочник "Склады". Предположим что доступ к этому справочнику есть у всех пользователей.
Еще раз! Механизм функциональных опций управляет отображением данных на форме, а не ограничивает доступ к объекту метаданных (Справочник, документ, записи регистра....) Необходимо сделать настройку "Использовать несколько складов" (Да да... Это же есть в УТ 11.Х, там такое и для организаций сделано) . Если используем несколько складов, то в интерфейсе доступен справочник склады, если нет то команда которая открывает один склад (полагаем что он один и есть в таком случае, и не усложняем задачу).

Объекты метаданных конфигурации

Для реализации поставленной задачи нам потребуется:
  • Две функциональных опции "ИспользоватьНесколькоСкладов" и "НеИспользоватьНесколькоСкладов". Первая отвечает за доступность справочника, а вторая за доступность общей команды для вызова алгоритма "открытия" склада
  • Одноименные константы с типом "Булево" для хранения значений функциональных опций
  • Справочник "Склады"
  • Общая команда "ОткрытьОсновнойСклад". Не забываем указать для нее группу команд, иначе не применить конфигурацию (будет ошибка)
И добавим одну подсистему куда включим все имеющиеся объекты

Настройка функциональных опций

Первая опция "ИспользоватьНесколькоСкладов". Значение хранится в одноименной константе, в состав входит справочник "Склады". Таким образом, когда значение константы "Истина" справочник доступен в интерфейсе, когда ложь, справочник не будет отображаться и в интерфейсе (Содержимом подсистем, формах объектов и т.д.)




Вторая функциональная "НеИспользоватьНесколькоСкладов" установлена когда НЕ установлена первая "ИспользоватьНесколькоСкладов".
Т.е. если мы не используем несколько складов (ИспользоватьНесколькоСкладов = ЛОЖЬ и справочник "Склады" недоступен), то отображается команда "ОткрытьОсновнойСклад" доступность которой управляется опцией "НеИспользоватьНесколькоСкладов" (НеИспользоватьНесколькоСкладов = ИСТИНА)

Проверяем поведение системы

Вариант №1. ИспользоватьНесколькоСкладов = Истина, НеИспользоватьНесколькоСкладов = Ложь. В интерфейсе доступен справочник "Склады"


Вариант №2. ИспользоватьНесколькоСкладов = Ложь, НеИспользоватьНесколькоСкладов = Истина. В интерфейсе НЕ доступен справочник "Склады", вместо этого доступна общая команда "ОткрытьОсновнойСклад"

Назначение

Функциональные опции позволяют разработчику описать возможности конфигурации, которые можно оперативно включать или выключать на этапе внедрения и/или в процессе работы системы. Например, возможность работы с дополнительными свойствами товаров можно выделить в отдельную функциональную опцию. Тогда если отключить эту возможность, в интерфейсе конфигурации «пропадут» все связанные (с дополнительными свойствами товаров) возможности.

Система способна автоматически учитывать состояние сделанных настроек – скрывать выключенные возможности, делая интерфейс приложения более ясным и понятным для пользователя.

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

Функциональные опции могут оказывать влияние:

  • на пользовательский интерфейс – при выключении каких-либо функциональных опций система скрывает в пользовательском интерфейсе все элементы, относящиеся к ней. При этом затрагиваются следующие элементы интерфейса:
    • глобальный командный интерфейс;
    • формы;
    • отчеты, реализованные с помощью системы компоновки данных.
  • алгоритмы, написанные на встроенном языке – имеется возможность программно получать (и устанавливать) значения функциональных опций и использовать их в различных условиях, например, для уменьшения объема вычислений.

Глобальный командный интерфейс

Влияние функциональных опций на глобальный командный интерфейс заключается в том, что система скрывает команды всех объектов, относящихся к недоступным опциям. Например, если значение функциональной опции Закупки равно значению Ложь, то будут скрыты команды открытия раздела Закупки, создания документа ПриходТовара, открытия списка ПриходТовара и т. д.

В свою очередь, опция Закупки может учитывать значение параметра функциональной опции, например, Организация. Изменяя с помощью методов встроенного языка значение этого параметра, можно изменять состояние функциональной опции, а следовательно, и видимость элемента интерфейса.

Форма

В управляемой форме функциональные опции могут влиять на реквизиты формы, команды и (как следствие) на связанные с ними элементы формы.

От видимости реквизитов формы зависит видимость полей и таблиц управляемой формы, а видимость кнопок зависит от видимости команд.

Система компоновки данных

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

Подробнее о влиянии функциональных опций на доступность полей в отчете см. в разделе «Функциональные опции и право на просмотр поля в отчете» главы «Управляемые отчеты».

Общая схема работы

Механизм функциональных опций включает в себя два типа объектов метаданных: Функциональная опция и Параметр функциональных опций.

Функциональная опция представляет собой объект метаданных, непосредственно влияющий на состав интерфейса приложения. С помощью объектов этого типа можно скрыть элементы, которые относятся к недоступной функциональности. Например, опция Валютный учет может убрать справочник Валюты, поле Валюта из документов, колонку Валютная сумма из отчетов. Источником значения функциональной опции является объект метаданных, выбранный в качестве свойства Хранение, например, это может быть константа.

В случае хранения значения функциональной опции в реквизите справочника или ресурсе регистра сведений требуется дополнительная информация, которая указывает на то, как именно выбрать значение опции. Для этой цели предусмотрен отдельный объект метаданных – Параметр функциональных опций.

Можно сказать, что параметры функциональных опций являются осями координат пространства значений функциональных опций. Причем один параметр функциональных опции может определять значение «своей» оси координат одновременно для множества функциональных опций.

Рассмотрим пример: допустим, количественный учет зависит от подразделения, входящего в организацию. В нашей информационной базе можно вести учет от имени разных организаций.

Для хранения значений функциональных опций создадим регистр сведений, где измерениями (осями координат) будут:

  • Организация (соответствующего типа);
  • Подразделение (соответствующего типа).

Ресурсом регистра сведений будет значение функциональной опции количественного учета.

Тогда общая структура конфигурации будет выглядеть следующим образом:

  • регистр сведений КоличественныйУчет:
    • Измерение Организация,
    • Измерение Подразделение,
    • Ресурс КоличественныйУчет, имеющий тип Булево.
  • параметр функциональных опций Организация. Свойство Использование указывает на измерение Организация регистра сведений КоличественныйУчет.
  • параметр функциональных опций Подразделение. Свойство Использование указывает на измерение Подразделение регистра сведений КоличественныйУчет.
  • функциональная опция КоличественныйУчет, свойство Хранение указывает на ресурс КоличественныйУчет регистра сведений КоличественныйУчет.

В результате для того, чтобы определить необходимость ведения количественного учета, нам необходимо в каждом конкретном случае указать значения параметров функциональных опций (Организация и Подразделение) и получить значение функциональной опции.

Взаимодействие с другими объектами

Функциональные опции могут быть назначены следующим объектам конфигурации:

  • Подсистемы,
  • Общие команды,
  • Константы,
  • Критерии отбора,
  • Справочник,
  • Документ,
  • Журнал,
  • План счетов,
  • План видов характеристик,
  • План видов расчета,
  • Бизнес-процесс,
  • Задача,
  • Планы обмена,
  • Отчет,
  • Обработка,
  • Регистр накопления,
  • Регистр сведений,
  • Регистр бухгалтерии,
  • Регистр расчета,
  • Команда,
  • Реквизит объекта метаданных,
  • Табличная часть,
  • Реквизит табличной части,
  • Признак учета,
  • Признак учета субконто,
  • Реквизиты адресации,
  • Измерение регистра,
  • Ресурс регистра.

Также функциональные опции могут влиять на видимость элементов формы.

Создание

Создание функциональной опции

Для того чтобы создать функциональную опцию, необходимо создать объект конфигурации Функциональная опция. Это можно сделать в режиме Конфигуратор обычным способом, то есть в окне конфигурации следует выбрать пункт Общие, далее Функциональные опции и добавить новый объект.

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

Кроме имени объект имеет обязательное для заполнения свойство - Хранение. В редакторе для него можно выбрать один из объектов, который будет являться источником значения опции. В список доступных объектов входят:

  • константы,
  • реквизиты справочников,
  • ресурсы регистров сведений.

Ограничение на тип источника значения опции нет, но для управления интерфейсом пригодны только те функциональные опции, которые хранят свои значения в реквизитах, имеющих тип Булево. Значения функциональных опций с другими типами доступны только для анализа на встроенном языке.

Создание параметра функциональных опций

Для создания Параметра функциональной опции следует создать одноименный объект конфигурации. Это можно сделать в ветке Общие, пункт Параметры функциональных опций.

Кроме имени, параметр имеет обязательное свойство Использование. В нем указывается набор объектов, значения которых будут определять то, как следует выбирать значение функциональной опции. В список доступных объектов входят справочники и измерения регистра сведений. Для каждого параметра функциональных опций в данном списке можно выбрать один справочник (из всего перечня справочников) и по одному измерению каждого регистра сведений.

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

Назначение объектам метаданных

Объект метаданных (например, справочник) можно отнести к одной или нескольким функциональным опциям. Для этого служит свойство Функциональные опции, которое содержит ссылки на созданные в конфигурации функциональные опции. Список доступных опций ограничен только теми опциями, для которых в свойстве Хранение назначен объект, тип значения которого является Булево.

Назначение реквизитам и командам формы

Объекты, принадлежащие форме (Реквизиты и Команды), также можно задействовать в механизме функциональных опций.

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

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

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

Использование в механизме ограничения доступа к данным

В условиях механизма ограничения доступа к данным Функциональные опции могут использоваться точно так же, как и Параметры сеанса. Допустимо использовать только независящие от параметров опции, то есть те, которые привязаны к константам.

Определение значения функциональной опции

Значение функциональной опции определяется объектом, который указан в свойстве Хранение. В случае константы используется ее значение. Для опции, связанной с реквизитом справочника или ресурсом регистра сведений, – значения, хранящиеся в этих объектах. Для того чтобы найти конкретный объект, который хранит значение функциональной опции, необходима дополнительная информация – набор значений параметров функциональных опций.

Если опция хранится в реквизите справочника, параметр должен содержать ссылку на конкретный элемент справочника. Если опция хранится в ресурсе регистра сведений, должны быть указаны значения всех измерений регистра. В этом случае каждое измерение должно характеризоваться своим параметром.

Методы встроенного языка позволяют получить значение опции, как в зависимости от переданных параметров, так и для параметров, установленных для командного интерфейса или конкретной формы (подробнее смотрите раздел «Работа с функциональными опциями во встроенном языке» этой главы).

Если функциональная опция привязана к ресурсу периодического регистра сведений, то система использует срез последних для получения значения опции. Если требуется получать значение опции на какую-либо другую дату, необходимо указать значение для параметра функциональных опций Период (Period), имеющий тип Дата, который будет использоваться как дата получения среза. Этот параметр не нужно создавать в метаданных. Он предоставляется системой автоматически.

Управление значениями параметров функциональных опций

Значения параметров устанавливаются с помощью методов встроенного языка. При этом возможно разграничить область действия значения параметров. Параметры можно установить в рамках всего командного интерфейса и в рамках конкретного экземпляра формы.

Работа с функциональными опциями во встроенном языке

Методы работы с функциональными опциями можно разделить на две части:

  • методы получения значения опции,
  • методы работы с параметрами функциональных опций.

Работа со значениями функциональных опций

Методы глобального контекста ПолучитьФункциональнуюОпцию() и ПолучитьФункциональнуюОпциюИнтерфейса() возвращают значение функциональной опции. Разница между ними заключается в том, что первый метод позволяет указать набор параметров функциональных опций, а второй – возвращает значение функциональной опции исходя из параметров, заданных для командного интерфейса.

В управляемой форме есть свой метод, который возвращает значение опции для параметров, указанных в рамках формы, – ПолучитьФункциональнуюОпциюФормы().

Работа с параметрами функциональных опций

Методы работы с параметрами функциональных опций позволяют получать и устанавливать значения параметров функциональных опций для командного интерфейса или конкретной формы. Для установки значений параметров функциональных опций необходимо вызвать соответствующую функцию (УстановитьПараметрыФункциональныхОпцийИнтерфейса () или УстановитьПараметрыФункциональныхОпцийФормы ()), передав ей в качестве параметра структуру, ключ которой соответствует имени одного из параметров функциональных опций, а значение – значению параметра. Вызов вышеуказанных методов автоматически обновит соответствующую часть интерфейса.

Параметры не обязательно указывать все сразу, можно изменить значение конкретного параметра или набора параметров, выборочно. Но эффективнее осуществляется именно групповая установка значений одним вызовом.

Для получения значений параметров необходимо вызвать соответствующую функцию (ПолучитьПараметрыФункциональныхОпцийИнтерфейса () или ПолучитьПараметрыФункциональныхОпцийФормы ()), которая вернет установленные параметры в виде структуры, где ключом будет выступать имя параметра.

Практически все типовые решения на платформе 1С:Предприятие 8.x используют механизм функциональных опций. Он позволяет управлять функциональностью конфигурации блочно.

Так, например, опция "Использование внутренних заказов" (см. скриншот справа) позволяет сделать доступным этот документ для использования в режиме "1С:Предприятие" пользователю, а также включает отдельные ветки алгоритмов, связанных с данным функционалом.

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

Принцип работы

Как было сказано выше, функциональная опция позволяет включать/отключать связанный с ней функционал конфигурации. Рассмотрим последовательность действий по созданию и настройке этого объекта конфигурации.

В ветке конфигурации "Общие->Функциональные опции" мы можем создать новый объект или посмотреть свойства уже созданных опций. В тестовой конфигурации создадим функциональную опцию "ВключитьВажность". В самом начале, когда еще не была произведена настройка объекта, окно списка его свойств будет выглядеть следующим образом:

Свойства "Имя" и "Синоним" имеют стандартное назначение. Особый интерес вызывают настройки "Хранение" и "Состав".

В поле "Хранение" выбирается объект в конфигурации, откуда функциональная опция будет получать значение. Обычно для этих целей используются константы типа булево. По значению константы платформа будет определять включать связанный функционал или нет.

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

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

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

Пример использования

В нашей тестовой конфигурации создадим перечисление "Важность", а также константу

"ВключитьВажность". Созданные объекты представлены на следующем скриншоте.

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


В тестовом документе будут два реквизита:
  • "Комментарий" с типом "Строка".
  • "Важность" с типом "ПеречислениеСсылка.Важность".

В состав функциональной опции добавим реквизит документа "Важность" и далее рассмотрим поведение платформы в пользовательском режиме.

Запустив программу в режиме "1С:Предприятие" откроем тестовый документ. На форме мы не увидим реквизита "Важность", поскольку еще не включили функциональную опцию.

Чтобы включить использование реквизита "Важность" необходимо установить значение константы "ВключитьВажность" в ИСТИНА. Тогда форма изменится следующим образом:

Работа функциональных опций распространяется практически на все объекты конфигурации, за исключением некоторых из ветки "Общие", выполняющих в основном служебные функции. Например, нельзя в состав функциональной опции включить другие функциональные опции (да и смысла это особого не имеет).

Рассмотрим несколько интересных моментов работы данного объекта конфигурации:

1. Настройка функциональных опций практически никак не влияет на SQL-запросы, формируемых платформой.

Например, при открытии документа с отключенной функциональной опцией, платформа в любом случае в запросе получает значение этого реквизита. На следующем скриншоте приведены SQL-запросы, формируемых с включенной и отключенной опцией.

2. Элемент формы "Важность" на форме, вне зависимости от значения функциональной опции, всегда имеет значения для свойств "Видимость" и "Доступность" равными ИСТИНА.

Действительно, как при создании формы на сервере, так и при открытии формы, а также при дальнейшей работе с ней, свойства "Видимость" и "Доступность" не устанавливаются в ЛОЖЬ платформой автоматически. Вероятно, 1С:Предприятие 8.x делает это "за кулисами".

3. Платформа для получения значения функциональной опции формирует SQL-запрос к СУБД в соответствии с объектом хранения, т.е. к константе. В одной из предыдущих статей мы уже говорили о построении SQL-запросов к константам и способе их хранения в базе данных.


В нашем примере платформа формирует следующий SQL-запрос:

Что касается момента получения значения функциональной опции, то платформа руководствуется следующим принципом: первое получение значения функциональной опции происходит при обращению к объекту/реквизиту, входящим в ее состав. В дальнейшем платформа использует кэшируемое значение до тех пор, пока не будет изменено значение объекта, который хранит это значение (в нашем примере - константы "ВключитьВажность") или перезапущен сеанс пользователя. Значение функциональной опции кэшируется в рамках отдельного сеанса.


Все вышесказанное проверил экспериментальным путем. Все, что использовал для экспериментов находится в тестовой конфигурации (ссылка в конце статьи), за исключением .

Вывод

Функциональные опции неотъемлемая часть практически любого тиражного решения на платформе 1С:Предприятие 8.x. Именно благодаря этому механизму можно создавать конфигурации с блочным построением функционала, который с легкостью включается/отключается при настройке программы. При этом возможности механизма можно расширить за счет использования параметров функциональных опций , но это уже тема для другой статьи.

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

Файлы для загрузки:

Функциональные опции - это общие объекты конфигурации . Они являются частью механизма функциональных опций и позволяют выделить в прикладном решении функциональность, которую можно включать/выключать при внедрении, не изменяя само прикладное решение.

Например, в зависимости от условий конкретного внедрения, необходимо предусмотреть отключение учета товаров по складам. Чтобы при оформлении документов поступления товаров поле Склад не отображалось в форме документа.

Для этого в конфигурации может быть определена функциональная опция Учет по складам , хранящаяся в константе типа Булево .

С этой функциональной опцией можно связать различные объекты конфигурации или их реквизиты. Например, с этой функциональной опцией можно связать реквизит Склад документа Поступление товаров .

Тогда, при внедрении можно включать или выключать эту функциональную опцию в конкретной информационной базе в режиме 1С:Предприятие.

Платформа при этом будет автоматически включать и выключать отображение всех соответствующих элементов интерфейса (полей, команд, колонок списков, элементов отчетов). В нашем случае - будет скрываться или отображаться поле Склад во всех формах документа Поступление товара .

Последние материалы раздела:

Что делать, если завис Мейзу м3 ноте и подобные смартфоны и планшеты на андроиде
Что делать, если завис Мейзу м3 ноте и подобные смартфоны и планшеты на андроиде

Нагревание смартфона Meizu M3 Note до 45-50°C во время зарядки аккумулятора или при длительной работе ресурсоемкого софта является обычным...

Решение проблемы с перегревом Meizu M5 Причины сильного нагревания смартфонов Meizu
Решение проблемы с перегревом Meizu M5 Причины сильного нагревания смартфонов Meizu

Meizu m3 note завис , нагревается и вы не знаете что с ним делать? В этой статье вы узнаете, как сделать принудительную перезагрузку зависшего...

Огромная база данных торрентов, доступных для скачивания
Огромная база данных торрентов, доступных для скачивания

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