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

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

30.03.2017

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

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

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

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

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

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




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

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

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


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

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

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

  1. Функциональная опция;
  2. Параметры функциональных опций.

Подробнее

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

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

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

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

[свернуть]

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

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

ВНИМАНИЕ! Если клиентское приложение работает с файловым вариантом информационной базы через веб-сервер, то изменение функциональной опции приведет к изменению пользовательского интерфейса только после перезапуска веб-сервера (перезапуск клиентского приложения не вызовет изменение пользовательского интерфейса).

Свойства Функциональных опций 1С

  • Хранение - поле, в котором необходимо выбирать объект с типом булево. Как правило, используются константы.
  • при получении - флаг отвечает за возможность получения значения функциональной опции в привилегированном режиме.
  • Состав - список объектов и реквизитов объектов, видимость которых включается/выключается при выключении/выключении функциональной опции (будет управляться с помощью управляемой формы).

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

Особенности использования Функциональных опций 1С:

  1. Функциональные опции могут иметь значения произвольного типа (не обязательно Булево ).
  2. Добавляя новую константу для использования функциональной опции, не забудьте включить ее в соответствующую подсистему и назначить на нее права.
  3. Работа с функциональными опциями доступна из встроенного языка, благодаря чему разработчик может создавать собственные алгоритмы значений функциональных опций.
  4. Команда командного интерфейса будет исключена из командного интерфейса в случае, если функциональной опцией отключен:
    • реквизит, являющийся параметром команды;
    • тип параметра команды (если тип параметра команды составной, то команда становится недоступной тогда, когда отключаются все типы параметра).

ВНИМАНИЕ! Функциональные опции и их параметры не влияют на состав базы данных: все таблицы и поля присутствуют в БД независимо от состояния функциональных опций.

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

  1. управляемой формы типа <Вид>Объект (СправочникОбъект , ДокументОбъект и т. д.) будет отключен в том случае, если функциональной опцией отключен соответствующий объект . Анализируются только те функциональные опции, которые не имеют параметров.
  2. Основной реквизит управляемой формы типа ДинамическийСписок будет отключен в том случае, если функциональной опцией отключен объект конфигурации, который указан в качестве основной таблицы динамического списка. Анализируются только те функциональные опции, которые не имеют параметров.
  3. Отключается реквизит формы ссылочного типа, если объект конфигурации, образующий этот тип, отключен функциональной опцией. Реквизит формы составного типа отключается в том случае, если функциональные опции отключают все составляющие типы.
  4. Таблица формы будет отключена, если она отображает данные реквизита формы, отключенного функциональной опцией.
  5. В диалоге выбора типов (например, для полей ввода, связанных с реквизитами составного типа) отсутствуют типы, если объекты конфигурации, формирующие эти типы, отключены функциональной опцией. Информация о типах, отключенных функциональными опциями, кешируется на стороне клиента и очищается через 20 минут или во время вызова метода ОбновитьИнтерфейс() .

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

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

Параметр функциональной опции создается с помощью объекта конфигурации 1С "Параметры функциональных опций".

[свернуть]

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

Свойства параметра функциональных опций:

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

ВНИМАНИЕ! Нельзя использовать один и тот же объект метаданных в нескольких параметрах функциональных опций.

1. Права доступа.

На самом деле все очень просто. В 1С по умолчанию запрещено всё, что не разрешено . Есть только одна сущность, отвечающая за доступ пользователя к какой-либо функциональности или данным. Эта сущность называется "Право доступа" . Она является единственным элементом, отвечающим за доступ к конкретному режиму работы, справочнику, реквизиту....

Количество видов прав доступа предопределено платформой. Всего платформе есть две основные группы прав доступа. Общие для всей системы права доступа к механизмам платформы , отвечающие за доступ к определенным режимам работы платформы (Администрирование, Монопольный режим, Тонкий клиент,Интерактивное открытие внешних отчетов....). И объектные права доступа , позволяющие работать с различными объектами конфигурации. Их количество зависит от типа объекта конфигурации. Например, у справочника есть 16 различных видов доступа (Чтение, Добавление, Изменение, Удаление....). Для регистра сведений видов доступа всего пять. Все эти права можно установить только на уровне справочника целиком. Также можно ограничить доступ на уровне реквизитов. Но в этом случае доступна лишь часть видов прав (для справочников это права Просмотр и Редактирование).

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

Рассмотрим права доступа к справочнику. На данной схеме видно, что большинство прав является уточнением более общих прав. Если Право1 полностью расположено на схеме внутри прямоугольника другого Права2, то Право1 не может быть выдано без выдачи Права2. Самым общим правом является право "Чтение". Если право "Чтение" отсутствует, то недоступны и все остальные права. Если недоступно право "Добавление", то нельзя установить право "Интерактивное добавление". Однако, систему прав нельзя назвать полноценной иерархией. Например, право "Редактирование" можно дать лишь при наличии прав "Просмотр" и "Изменение". Но можно дать "Просмотр" без "Изменение" или "Изменение" без "Просмотр".

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

2. Роли - механизм предоставления прав доступа

Рассмотрим, как именно выполняется предоставление пользователю прав доступа. Для удобства выдачи прав доступа в платформе 1С используется специальный механизм "Роли" . Он является прослойкой между пользователями информационной базы и правами доступа. В каждой роли объединен набор прав доступа, назначение которых имеет смысл выполнять только одновременно. Например, в роли "Чтение контактной информации" логично объединить наборы прав, отвечающих за связанные справочники с контактной информацией. Наиболее простым способом установки роли пользователю является открытие карточки пользователя ИБ в конфигураторе и установка галочек напротив нужных пользователю ролей . Это универсальный способ и он работает в любых конфигурациях. Однако, с усложнением конфигураций и увеличением количества ролей он стал довольно трудоемкий. Поэтому в актуальных типовых решениях есть дополнительная прослойка между пользователем ИБ и ролями. Эта прослойка реализована в виде подсистемы "Управления доступом" . Она позволяет объединять роли в более крупные сущности - "Профили" и назначать пользователю уже не отдельные роли, а профили, содержащие наборы из нескольких ролей.

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

С технической точки зрения данная система выдачи прав реализовывается с участием двух стандартных подсистем. Подсистема "Управление доступом" используется для настройки связи групп доступа с предопределенными в конфигурации ролями. Подсистема "Пользователи" используется для настройки связей пользователей ИБ с группами доступа конфигурации.

3. "Логика разрешений" как правило пересечения ролей.

Важно понимать, что в 1С общая логика управления доступом это логика разрешений . В платформе 1С вообще нет никаких механизмов запрета доступа . Есть только механизмы выдачи доступа . По умолчанию доступ ко всем данным запрещен, и настройка доступа заключается в выдаче каждому пользователю нужных ему прав . Это означает, что если какой-то ролью пользователю дано право на просмотр документов "Реализация товаров", то никакими способами нельзя это право отнять другими ролями или любыми другими механизмами платформы и конфигурации. Можно изначально выдать не полный доступ к справочнику, а отфильтровать с помощью RLS данные, на которые мы даем доступ. Но если доступ уже выдан, то забрать его другими ролями уже нельзя.

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

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

4. Косвенное управление доступом.

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

4.1. Функциональные опции.

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

Подробнее о работе с функциональными опциями можно почитать на ИТС

4.2. RLS (Record Level Security)

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

Для настройки такого разрешения есть дополнительный механизм RLS (Record Level Security) . Как и следует из названия, этот механизм контроля доступа на уровне конкретных записей таблиц. Если права доступа дают доступ к таблицам вцелом (справочникам) или колонкам таблиц (реквизитам), то RLS определяет конкретные строки таблиц (записи), с которыми разрешено работать пользователю. Он позволяет определить данные, которые пользователю доступны.

При разборе данного механизма стоит всегда помнить, что RLS не является механизмом запрета доступа . Он является механизмом фильтрации выдачи доступа . Т.е. RLS не влияет на имеющиеся у пользователя права, он является фильтром, ограничивающим выдачу прав. RLS влияет только на ту конкретную связь "Роль" - "Право доступа", в которой он прописан. И не влияет на права доступа, выданные с помощью других ролей. Например, если одной ролью будет разрешен доступ к документам только по Организации1, а другой ролью доступ к документам по Складу1, то в итоге пользователь получит доступ ко всем документам, в которых указана Организация1 ИЛИ Склад1. Поэтому если пользователю выдается несколько ролей, то фильтр с помощью RLS нужно ставить в каждой роли по обоим полям (по организации и складу). В типовых решениях эта задача обычна решается созданием одной роли, в которой прописываются все возможные фильтры RLS. Данная роль потом назначается всем пользователям, работающим с данными справочниками. Также контролируется, чтобы у пользователя не были доступны другие роли, содержащие право доступа к ограниченным документам.

Так же стоит обратить внимание что фильтры RLS можно наложить не на все возможные виды доступа к данным, а лишь на виды доступа верхнего уровня . Например, для справочников из имеющихся шестнадцати видов доступа фильтры RLS можно наложить лишь на четыре основных: Чтение, Изменение, Добавление и Удаление. Это означает, что мы не можем, например, дать пользователю одновременно право "Изменение" без фильтра для возможности работать программно с любыми документами и право "Редактирование" с фильтром RLS по организации для интерактивной работы. Если нам нужно, чтобы пользователь мог редактировать документы с фильтром RLS , мы обязаны наложить общий фильтр на верхнем уровне "Изменение" или "Чтение".

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

4.3. Разделение данных.

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

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

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

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

4.4. Программный код.

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

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

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

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

4.5. Сравнение вариантов.

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

Как включить

Что при этом произойдет

Функциональные опции - интерфейсный механизм скрытия функционала

1. Добавить место хранения функциональной опции: константа, реквизит справочника или ресурс регистра сведений.
2. Добавить в конфигурацию функциональную опцию и указать в ней созданное ранее место хранения.
3. Указать в свойствах функциональной опции ее состав, отметить все объекты конфигурации, которые будут от нее зависеть.
4. Включить использование функциональной опции в режиме предприятия.

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

RLS (Record Level Security) - дополнительные фильтры на разрешаемые роле права

1. Прописать фильтры RLS в каждой роле пользователя для каждого из прав, которые нужно ограничить.

Примечание: В режиме предприятия никаких действий выполнять не нужно. Фильтры применятся автоматически.

1. Настроенный фильтр будет добавляться к каждому запросу к ИБ.
2. Данные, не подходящие под фильтр RLS нельзя будет получить никакими средствами: они не будут отображаться в формах, отчетах; не будут отбираться никакими запросами.

Разделение данных - ведение в одной физической базе нескольких независимых

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

2. Добавит два параметра сеанса: для признака использования и текущего значения разделения данных.

3. Добавить программный код, обеспечивающий включение разделения данных и заполнения текущего значение разделителя.

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

  • Добавится поле "Разделитель", в котором будет храниться значение разделителя.
  • Перестроятся все индексы по таблицам. В них перевым полем добавится поле разделителя.

2. После включения разделения.

  • В абсолютно все запросы к ИБ будет добавляться фильтр по значению разделителя.
  • При записи любых данных будет автоматически заполняться значение разделителя по значению параметра сеанса.
Программный код - любые дополнительные точечные ограничения
1. Добавить код наложения нужных ограничений в конфигурацию.

1. Сделает именно то, что написано.

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

5. Итоги.

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

Назначение

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

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

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

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

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

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

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

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

Форма

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Создание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функциональные опции и Параметр функциональной опции — это объекты конфигурации 1С 8.3 (8.2), в совокупности представляющие из себя механизм функциональных опций. Механизм функциональных опций — функционал, позволяющий определить набор функционала, который необходим пользователям.

Проще говоря, механизм функциональных опций — это включатель/выключатель различного функционала в конфигурации.

Зачем может понадобиться отключать функционал?

Получите 267 видеоуроков по 1С бесплатно:

Зачастую дополнительный функционал может усложнять работу сотрудникам. Банальный пример использования функциональных опций в 1С — в базе ведется учет по одной организации или складу, зачем тогда обязывать пользователя заполнять эти данные во всех документах?

Чем управляют функциональные опции?

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

Новое на сайте

>

Самое популярное