Использование функциональных опций
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1.1. В случае если некоторая функциональность конфигурации является необязательной для использования, то для управления доступностью такой функциональности на стадии внедрения следует применять функциональные опции. Для хранения значений функциональных опций в информационной базе необходимо завести в конфигурации соответствующие данные (например, константы).
Допустим, в конфигурации есть функциональность версионирования данных информационной базы, которая является необязательной. Для управления доступностью этой функциональности необходимо:
- создать функциональную опцию ИспользоватьВерсионированиеОбъектов , которая определяет использование прикладного механизма конфигурации для текущей информационной базы
- создать константу ИспользоватьВерсионированиеОбъектов типа Булево для хранения значения этой функциональной опции
- в свойстве Хранение функциональной опции указать константу ИспользоватьВерсионированиеОбъектов .
После этого, те или иные объекты конфигурации можно «привязать» к функциональной опции, включив их в ее состав, а в случае необходимости управления доступностью кода – использовать метод ПолучитьФункциональнуюОпцию :
ИспользуетсяМеханизмВерсионирования = ПолучитьФункциональнуюОпцию(» ИспользоватьВерсионированиеОбъектов «);
Таким образом, набор функциональных опций описывает функциональность конфигурации, доступность которой на этапе внедрения можно настроить в зависимости от требований конкретного предприятия. При этом платформа автоматически изменяет пользовательский интерфейс в соответствии с установленными значениями функциональных опций.
Функциональные опции могут также влиять на бизнес-логику. Для чего применяются функциональные опции не только булева типа, но и других типов, например, ссылки на справочники или значения перечислений.
1.2. Доступность функциональности может задаваться не только для информационной базы в целом, но и в зависимости от контекста применения этой функциональности. Допустим, в конфигурации необходимо управлять применением функциональности сложного учета НДС, но не в целом для всей информационной базы, а в зависимости от организации. Для этого необходимо:
- создать функциональную опцию УчетнаяПолитикаСложныйУчетНДС
- создать параметр функциональной опции Организация , поскольку значение функциональной опции зависит от организации (если такого параметра в конфигурации еще нет)
- создать регистр сведений УчетнаяПолитикаНалоговыйУчет для хранения значений этой функциональной опции, с измерением Организация и ресурсами, которые необходимы для управления функциональностью учета НДС
После этого, для того чтобы в той или иной форме значение функциональной опции соответствовало контексту, необходимо устанавливать значения параметров функциональной опции, например, так:
УстановитьПараметрыФункциональныхОпцийФормы(Новый Структура(«Организация», <ТребуемаяОрганизация>));
В случае необходимости управления доступностью кода в зависимости от значения такой функциональной опции, ее значение можно получать, например, так:
ПараметрыУчетнойПолитики = Новый Структура(«УчетнаяПолитикаОрганизация», <ТребуемаяОрганизация>);
СложныйУчетНДС = ПолучитьФункциональнуюОпцию(«УчетнаяПолитикаСложныйУчетНДС», ПараметрыУчетнойПолитики);
МоментОпределенияНалоговойБазыНДС = ПолучитьФункциональнуюОпцию(«УчетнаяПолитикаМоментОпределенияНалоговойБазыНДС «, ПараметрыУчетнойПолитики);
Внимание: следует учитывать, что описанный здесь вариант применения функциональных опций не является единственным вариантом их использования.
Подробнее см. в документации по платформе 1С:Предприятие .
1.3. Не следует использовать функциональные опции не по назначению, например:
- создавать функциональные опции ради управления видимостью элементов управления конкретной формы. С помощью функциональных опций следует управлять доступностью той или иной функциональности для всей конфигурации (и, как следствие, доступностью элементов форм и команд во всей конфигурации, а не в одной отдельно взятой форме);
- использовать функциональные опции для оптимизации доступа к тем или иным данным информационной базы (хранения значений на сервере 1С:Предприятия). Для этой цели предназначены модули с повторным использованием возвращаемых значений.
Установка и получение значений функциональных опций
2.1 Платформа 1С:Предприятие не предоставляет каких-либо специальных средств для установки значений функциональных опций: установка значений функциональных опций производится установкой значений соответствующих констант, редактированием элементов справочников или записей регистров сведений. В конфигурации следует предусмотреть соответствующую функциональность.
2.2. При использовании функциональных опций с параметрами, следует иметь в виду, что если в справочнике или регистре сведений нет записи, соответствующей параметру, то функциональная опция считается выключенной. Если же параметру соответствует больше, чем одна запись, то значения функциональной опции складываются по «ИЛИ».
2.3. Если функциональная опция «привязана» к ресурсу периодического регистра сведений, то система использует срез последних для получения значения опции. Если требуется получать значение опции на какую-либо другую дату, необходимо указать значение для параметра функциональной опции Период типа Дата , который будет использоваться как дата получения среза. Например, если имеется периодический регистр сведений с измерением Организация , то следует использовать следующий синтаксис:
УстановитьПараметрыФункциональныхОпцийФормы(Новый Структура(«Организация, Период», <ТребуемаяОрганизация>, <ТребуемаяДата>));
- значение параметра Период необходимо предварительно привести к интервалу периодичности регистра для выполнения требования 2.5 . Например, если периодичность регистра – месяц, то:
- а сам параметр Период не следует создавать в метаданных, так как он предоставляется системой автоматически.
2.4. Также необходимо иметь в виду, что установка значения функциональной опции не вызывает автоматического изменения пользовательского командного интерфейса. Для отработки изменения следует вызвать метод ОбновитьИнтерфейс .
2.5. С точки зрения производительности системы следует иметь в виду, что значения функциональных опций кешируются на сервере. Однако большой размер кеша может ухудшить производительность. Поэтому не рекомендуется параметризовать функциональные опции такими данными, которые заведомо могут иметь большое число значений. Например, параметризация функциональной опции контрагентом или товаром не допустима, так как контрагентов или товаров может быть большое количество. Кроме того, зависимость применения функциональности от контрагента сомнительна. На практике функциональность ставится в зависимость от вида, контрагента или иного его признака. Например, если в конфигурации существует перечисление ВидКонтрагента , то применение той или иной функциональности следует ставить в зависимость от вида контрагента, а не от самого контрагента.
Зависимые функциональные опции
3.1. В некоторых случаях та или иная функциональность должна быть доступна при условии использования или отказа от использования другой функциональности. В подобных случаях сложной зависимости значения функциональной опции от значений других функциональных опций необходимо обеспечить непротиворечивость данных, связанных с функциональными опциями.
Например, функциональность перевода сотрудников из одной организации в другую (т.е. все связанные с этим документы и отчеты) доступна в случае, когда одновременно доступны функциональность «многофирменный учет» и функциональность «кадровый учет».
В таком случае, все объекты метаданных, связанные с переводом сотрудников, не могут и не должны ставиться в зависимость от функциональных опций «многофирменный учет» и «кадровый учет». Для этого необходимо ввести функциональную опцию «перевод сотрудников» и поставить в зависимость от нее все объекты метаданных, для которых это необходимо.
Кроме того, необходимо обеспечить зависимость значения этой функциональной опции от значений «многофирменный учет» и «кадровый учет», например, при записи значений соответствующих констант.
Значения всех трех приведенных в примере функциональных опций рекомендуется показывать администратору системы в соответствующей форме настроек. При этом значение функциональной опции «перевод сотрудников» должно быть недоступно для редактирования.
Редактировать значения таких функциональных опций рекомендуется элементами управления «Поле» вида «Поле флажка» с заголовком, совпадающим с названием соответствующей функциональной опции.
3.2. Значения взаимоисключающих функциональных опций, рекомендуется редактировать в соответствующей форме настройки при помощи элементов управления «Поле переключателя» , «Поле ввода» (со списком выбора) или иной элемент управления, предназначенный для выбора одного значения из многих. При этом, заголовки для переключателей или значения выпадающего списка для «Поле ввода» должны совпадать с названиями функциональных опций.
3.3. В том случае, если та или иная незначительная функциональность сложным образом зависит от значений функциональных опций, но при этом не может быть названа так, чтобы ее название было понятно конечному пользователю, рекомендуется воздержаться от создания очередной функциональной опции. При этом, например, зависимость тех или иных элементов форм должна обеспечиваться при создании формы на сервере за счет анализа значений функциональных опций из кода на встроенном языке.
Ограничения на использование параметров функциональных опций
4.1. По соображениям производительности не рекомендуется заводить в конфигурации более 10 параметров функциональных опций. Для того чтобы контролировать их количество в конфигурации, не следует создавать различные параметры функциональных опций одной смысловой нагрузки. Например, вместо двух параметров:
- ТипВерсионируемогоОбъекта , связанный с измерением ТипОбъекта регистра сведений НастройкаВерсионированияОбъектов
- ТипОбъектаСДополнительнымиОтчетамиИОбработками , связанный с измерением ТипОбъекта регистра сведений НазначениеДополнительныхОбработок
рекомендуется создать один параметр функциональных опций ТипОбъектаКонфигурации , который связан с измерениями обоих регистров сведений.
4.2. В общем виде, для принятия решения по поводу состава функциональных опций и их параметров рекомендуется придерживаться следующей схемы:
- Определяется, какая функциональность в нашем прикладном решении может быть опциональной (у нее есть «выключатель»).
- По каждому выявленному случаю определяется, выключается ли эта функциональность сразу для всей информационной системы или «выключателей» должно быть несколько, например, по одному на каждую организацию или на каждый вид товара.
- Выписываем список всех параметризуемых функциональных опций, а также список их параметров.
- При этом в списке параметров функциональных опций не допускаем нескольких параметров одного типа (все функциональные опции, зависящие от организации должны использовать один параметр функциональной опции).
- Если параметров функциональных опций оказывается неприемлемо много, то составляем их «рейтинг»: суммируем состав всех функциональных опций, которые параметризуются данным параметром и принимаем во внимание важность параметризуемых функциональных опций.
- Исключаем менее востребованные параметры.
- Те функциональные опции, которые «лишились» параметров:
- либо делаем непараметрическими (т.е. они включают функциональность во всей информационной базе в целом);
- либо удаляем, если управлять такой функциональностью в целом по информационной базе не имеет смысла.
В результате такого подхода, в конфигурации окажется приемлемое количество параметров функциональных опций.
Что такое функциональные опции и как они работают?
Что такое функциональные опции (далее ФО) и как с ними работать, необходимо знать каждому кто начинает заниматься разработкой на платформе 1С Предприятие 8. Конечно, можно и нужно читать официальную документацию, но для понимания новичками она бывает довольно сложна. В этой статье рассмотрим понятие ФО и принципы работы с этим объектом конфигурации. Приступим…
Что же такое функциональные опции?
Функциональные опции (ФО) – это объекты конфигурации, которые предназначены для включения и выключения различной функциональности в интерфейсе пользователя за счет отображения или сокрытия элементов включенных в состав ФО. Если коротко то ФО –выключатель видимости элементов на форме.
Для чего это может быть необходимо?
Функционал (типового) прикладного решения производится для решения обширного спектра задач для работы с различными разделами, разрезами учета, который здорово нагрузит интерфейс различными элементами и может оказаться чрезмерно большим громоздким и не бесполезным в рамках отдельного предприятия. ФО дают возможность настроить интерфейс пользователя сделав его более ясным, простым и понятным – оставив только нужные документы, реквизиты, логику и отключив все ненужное. Например: Наличие ФО «Многофирменный учет»
позволит вести учет разных предприятий, но во всех документах и отчетах станет видимым реквизит для выбора предприятия, который совсем не нужен для тех кто не ведет многофирменный учет, поэтому при выключении ФО реквизит будет просто скрыт из интерфейса.
На что влияют ФО ?
ФО могут оказывать влияние:
- На пользовательский интерфейс – при выключении каких либо ФО система скрывает в польззовательском интерфейсе все элементы которые к ней относятся, затрагивая следующие элементы интерфейса:
- Глобальный командный интерфейс
- Реквизиты формы (в т.ч. колонки реквизита формы типа ТаблицаЗначений или ДеревоЗначений);
- Команды формы
- Отчеты реализованные с помощью системы СКД.
ВНИМАНИЕ!
ФО не влияют на состав базы данных. Все таблицы и поля присутствуют в базе данных не зависимо от состояния значений ФО.
Как управлять функциональной опцией?
Выше уже было сказано, что включение / выключение видимости объектов добавленных в состав ФО зависит от логического значения, которое храниться в одном из трех видах объектов конфигурации (Константа, реквизит справочника, ресурс регистра сведений) и иметь Булевский тип.
Значение Истина – включенный объект в состав ФО отображается в интерфейсе программы. Ложь – включенный объект в состав ФО НЕ отображается в интерфейсе программы.
Какие свойства имеются у объекта функциональная опция?
- Хранение — поле в котором выбирается объект (Константа, Реквизит справочника, Ресурс регистра сведений) булевского типа.
- Привилегированный режим при получении — флаг отвечает за возможность получения значения функциональной опции в привилегированном режиме.
- Состав — список объектов и реквизитов объектов, видимостью которых можно будет управлять с помощью функциональной опции.
Рассмотрев объект конфигурации ФО, мы плавно подошли еще к одному объекту конфигурации — Параметры Функциональных Опций (далее ПФО), который неразрывно связан с механизмом работы ФО и для полноты понимания работы ФО и дальнейшей возможности рассмотрения примеров, рассмотрим этот объект прямо сейчас в этой же статье.
Что такое и для чего нужны ПФО ?
Параметры Функциональных Опций (ПФО) – хоть и представлены в дереве метаданных отдельным объектом, обособленно от ФО использоваться не могут и предназначены они для сообщения ФО – из какого элемента справочника или измерения регистра сведений брать значение для получения значения ФО.
У объекта ПФО есть только одно интересующее нас свойство:
Использование, которое предназначено для указания ФО в каком справочнике или ресурсе регистра сведений будут хранится элементы или записи для получения значения ФО.
На словах не совсем понятно, поэтому рассмотрим примеры работы с хранением значения ФО во всех доступных объектах.
Для экспериментов создадим ФО ВалютныйУчет и добавим в состав ФО справочник Валюты для организации возможности выбирать валюту в договорах с клиентами.
Значение ФО хранится в константе
Это самый простой способ управления функциональной опцией и его можно применить для создания возможности управления глобальными настройками прикладного решения, например – для включения или отключения валютного учета, учета партий, учета НДС, возможности включения многофирменного и многоскладского учета и т.д.
Для использования значения хранящегося в константе не нужно писать никакого кода, достаточно просто создать константу Булевского типа и указать ее в качестве значения хранения.
Значение ФО хранится в константе
Пример использования константы:
Значение константы Ложь Значение константы Истина
Значение ФО хранится в реквизите справочника
Данный вариант реализации в отличие от хранения значения в константе имеет ряд особенностей. Если просто выбрать в свойстве Хранение реквизит справочника Булевского типа, то такое решение будет работать не корректно. После установки у элемента справочника флажка в состояние Истина (видимость включена) и перезаписи элемента справочника, скрытый элемент диалога отобразится у элемента справочника при повторном открытии. Не корректность заключается в том, что включив видимость хотя-бы у одно элемента из всего справочника, скрытый элемент диалога отобразится у всех остальных элементов, даже у тех у кого реквизит хранящий значение ФО установлен в состояние Ложь (видимость выключена).
Значение ФО хранится в реквизите справочника
Значение ФО установлено в состояние Истина, и элемент на форме видимостью которого управляет ФО – отображается.
У другого элемента справочника значение ФО установлено в режим Ложь, но элемент диалога отображается на форме точно так же.Для того чтобы поведение системы стало корректным и скрытые элементы диалога отображались только у тех элементов справочника, где соответствующая настройка включена, необходимо дополнительно использовать объект конфигурации — параметры функциональных опций (ПФО) и при открытии формы элемента справочника передавать ссылку на текущий элемент справочника в ПФО .
Используя объект конфигурации ПФО, мы указываем ФО из какого именно элемента справочника нужно взять значение ФО.
Данное решение так же имеет недостаток, – который заключается в том, что значение ФО хранится в реквизите справочника, а значение реквизита в базе данных, и устанавливается оно только после записи элемента справочника БД. Другими словами – при такой реализации хранения значения ФО, можно бесконечно и безрезультатно включать/выключать ФО , до момента пока элемент справочника не будет записан в базу данных никаких изменений в интерфейсе происходить не будет.
Для решения этой проблемы можно хранить значение ФО в другом справочнике назовем его для примера ЗначенияНастройкиФО и тогда при изменении значения флага управляющего видимостью должна отработать процедура которая будет осуществлять поиск в справочнике с именем ЗначенияНастройкиФО элементов с необходимым значением реквизита и его дальнейшей передачи в параметр ФО.
Значение ФО хранится в ресурсе Регистра сведений
Хранение значения ФО в регистре сведений может быть обусловлено необходимостью управлять видимостью элементов диалога по нескольким условиям, иначе говоря, ФО включит видимость тогда, когда найдет запись, в Регистре сведений совпадающую по всем переданным значениям измерений, а так же хранение значения в регистре сведений позволит реализовать хранение истории изменений значения.
Для примера рассмотрим такую ситуацию:
— Валютный учет действует только для определенной организации и определенного склада в соответствии с этим видимость элемента «Валюта» в документе «Продажа», должна появляться только для соответствующей организации и соответствующего склада.
Для решения этой задачи изменим свойство хранение ФО «Валютный учет» с реквизита справочника, на измерение регистра сведений.
Для начала создадим регистр сведений в котором будем хранить значение в разрезе измерений.
Изменим значение хранение ФО на ресурс регистра сведений.
Создадим два объекта ПФО «Организация» и «Склад» и укажем, откуда брать значения для параметров.
В документе продажа будем вызывать процедуру «УстановкаПараметровФО()» для установки значения ПФО в обработчиках событий : «ПриСозданииНаСервере» и «ПриИзменении» при изменении значений элементов формы «Организация» и «Склад».
Проверяем что получилось…
В регистр сведений добавляем запись, содержащую значения для какой организации и какого склада ведется валютный учет.
Добавляем документ и выбираем организацию и склад..
Меняем склад на другой.
Как предполагалось –элемент формы «Валюта» просто исчез с формы.
В этой статье мы познакомились с механизмом ФО и рассмотрели базовые приемы работы с объектами конфигурации ФО и ПФО.
Функциональные опции 1С
Функциональные опции 1С – это инструмент, который позволяет управлять функциональностью приложения 1С в зависимости от тех или иных настроек.
Рассмотрим небольшой пример, в котором будут использованы функциональные опции. В моей учебной конфигурации имеется справочник Склады, а также у документов Продажа товаров и Закупка товаров имеется реквизит, тип которого ссылка на вышеприведенный справочник.
Вполне возможно, что в каких-то случаях при использовании конфигурации справочник Склады и соответствующие реквизиты документов понадобится, а в каких-то нет (например, организация использующая программу не будет вести складской учет). Когда нам склады не понадобятся, то они будут мешаться в интерфейсе. Чтобы их визуально убрать, и нужны функциональные опции. В случае нашей конфигурации нам следует сделать следующие доработки: во-первых, создать константу, которая будет отвечать за то, используются ли склады в прикладном приложении или нет. Во-вторых, создать саму функциональную опцию, которая будет привязана к константе, и в которой будет перечислен справочник Склады, а также все реквизиты, имеющие соответствующий тип.
Создадим константу Складской учёт. Данная константа должна иметь тип Булево.
В моей конфигурации у констант была создана форма констант, поэтому разместим новую константу на форме.
И выключим константу из стандартных команд.
Теперь создадим функциональную опцию. Для этого выделим ветку Функциональные опции дерева метаданных, вызовем правой клавишей мышки контекстное меню и выполним команду «Добавить».
Откроется окно редактирования функциональной опции, в котором первым делом нужно указать Имя, Синоним, и решить используется ли привилегированный режим при получении значения функциональной опции. Если привилегированный режим используется, то на получение значения функциональной опции не будут влиять права пользователя.
Следующим шагом необходимо решить, где будет храниться функциональна опция. В нашем случае, она будет храниться в константе, которую мы создали ранее.
Осталось определить, что входит в состав функциональной опции, то есть зависит от этой функциональной опции. Для этого нужно на закладе Состав поставить флаги рядом с теми объектами, которые будут завесить от значения константы Складской учет. В нашем случае это справочник Склады, реквизиты Склад документов Продажа товаров и Закупка товаров.
Если же мы что-то забыли и хотим это включить в состав функциональной опции уже после её создания, то не обязательно опять заходить в окно редактирования функциональной опции. Достаточно у забытого объекта вызвать окно Дополнительно.
И на закладке Функциональные опции отметь нужную функциональную опцию.
Напомню, что если значение в булевой константе Складской учёт — Истина, то справочник Склады и реквизиты Склад документов Продажа товаров и Закупка товаров будут доступны, а если Ложь – нет. Также, имейте в виду, что если нужно установить зависимость какого-то подчиненного объекта (в нашем случае реквизита) от функциональной опции, то нужно на закладке состав указать именно подчиненный объект, не следует указывать весь объект целиком!
И всё! Функциональная опция создана. Теперь, если мы запустим «1С: Предприятие» в пользовательском режиме, то не увидим там ни справочник Склады, ни соответствующие реквизиты документов.
Потому что, по умолчанию значение новой константы Ложь. Изменим значение константы.
Справочник Склады и соответствующие реквизиты документов появятся в интерфейсе.
Чтобы каждый раз не переоткрывать формы после включения/выключения функциональной опции, можно настроить обновление интерфейса при изменении константы. Для этого на управляемой форме констант создадим событие формы ПослеЗаписи.
И в обработчике события будем использовать процедуру ОбновитьИнтерфейс().
В результате, при изменении константы все формы будут изменены автоматически.
Внимание! Включение или выключение функциональной опции не влияет на хранение данных! Функциональные опции влияют только на интерфейс! При выключенной функциональной опции данные ни куда не денутся!
Более подробно о работе с функциональными опциями читайте в моей книге «Основы разработки 1С: Такси».
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Более подробно о работе с другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:Функциональные опции
Функциональные опции позволяют разработчику выделить некоторую часть функциональности прикладного решения, которую можно оперативно включать или выключать на этапе внедрения и/или в процессе работы системы.
Опции «Бухгалтерский учет» и «Расчет зарплаты»
Предположим, нам нужно отключить в конфигурации визможность ведения бухгалтерского учета и расчета заработной платы. Для отключения соответствующей функциональности мы создадим функциональные опции «Бухгалтерский учет» и «Расчет зарплаты», установим их для соответствующих объектов конфигурации и отключим их в режиме 1С:Предприятие.
Поскольку значения функциональных опций обязательно должны где-то храниться, добавим сначала константы БухгалтерскийУчет и РасчетЗарплаты с типом Булево , в которых будут храниться значения функциональных опций.
Если значение константы Истина , значит, функциональная опция включена. Если значение Ложь , функциональная опция выключена.
Затем раскроем ветвь «Общие», выделим ветвь «Функциональные опции» и создадим функциональные опции «Бухгалтерский учет» и «Расчет зарплаты», указав в свойстве «Хранение» соответствующие константы.
Теперь нам нужно привязать объекты конфигурации к функциональным опциям. На закладке «Состав» отметим нужные объекты для функциональной опции «Бухгалтерский учет». Аналогично, на закладке «Состав» отметим нужные объекты для функциональной опции «Расчет зарплаты».
Теперь, если мы откроем окно редактирования объекта конфигурации, входящего в состав функциональной опции «Бухгалтерский учет», то эта опция будет включена на закладке Функциональные опции окна редактирования этого объекта.
Таким образом, отображение объектов конфигурации в интерфейсе приложения зависит от того, включена связанная с ними функциональная опция или нет.
Для остальных объектов конфигурации на закладке «Функциональные опции» ничего не отмечено. Если функциональная опция для объекта выключена, это значит, что данный объект не зависит от значения функциональной опции и отображается всегда.
Если включить в состав функциональной опции какую-либо подсистему, то мы вообще не увидим соответствующего раздела в «1С:Предприятии», пока данная функциональная опция отключена.
После этого раскроем ветвь «Общие формы» и откроем общую форму констант с именем ОбщиеНастройки . Нам нужно добавить в нее новые константы, чтобы затем в пользовательском режиме открывать форму констант и изменять значение функциональных опций.
На закладке «Реквизиты» этой формы раскроем основной реквизит НаборКонстант и перетащим константы БухгалтерскийУчет и РасчетЗарплаты в окно элементов формы.
Опция «Учет клиентов»
Рассмотрим еще один пример. «Поименный» учет клиентов при оказании услуг востребован далеко не всегда. Зачастую важен лишь сам факт оказания услуги, при этом «личность» клиента не имеет значения. Поэтому предусмотрим в нашей конфигурации возможность отключить ведение списка клиентов и избавимся от необходимости указывать клиента каждый раз при оказании услуги.
Также доработаем существующие функциональные опции, включив в них и подсистемы «Бухгалтерия» и «РасчетЗарплаты». Раз бухгалтерия не нужна, значит ее нет нигде.
Откроем состав функциональной опции «Бухгалтерский учет» и добавим в него подсистему «Бухгалтерия». Аналогичным образом добавим в состав функциональной опции «РасчетЗарплаты» подсистему «РасчетЗарплаты».
Теперь займемся созданием новой функциональной опции. Для хранения этой опции добавим константу с именем УчетКлиентов с типом Булево . Добавим функциональную опцию «УчетКлиентов» и укажем, что ее значение будет храниться в константе УчетКлиентов . На закладке «Состав» укажем, какие объекты будут входить в эту функциональную опцию.
- Прежде всего — справочник «Клиенты».
- Затем — реквизит Клиент документа «ОказаниеУслуги».
- И в заключение — измерение Клиент регистра накопления «Продажи».
Теперь доработаем общую форму «ОбщиеНастройки», с помощью которой мы устанавливаем значения функциональных опций. Прежде всего перенесем в состав элементов формы нашу новую константу УчетКлиентов . После этого обеспечим автоматическую перерисовку интерфейса прикладного решения после установки новых значений функциональных опций. Для этого добавим обработчик события формы ПослеЗаписи .
ОбновитьИнтерфейс() — это метод глобального контекста, который обновляет командный интерфейс, начальную страницу и открытые формы с учетом текущих значений функциональных опций и их параметров.