К статье
Практический материал

Разработка и Конфигурация · 10 мин

Функциональные опции 1С: как создать и настроить

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

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

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

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

Когда стоит использовать функциональные опции

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

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

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

Хранение значений опции: константы и другие варианты

Значение опции нужно где-то хранить. Самый распространённый способ — константа с типом «Булево»: истина означает, что функциональность включена. Константа создаётся в ветке «Константы» дерева конфигурации, а затем указывается в свойстве «Хранение» функциональной опции.

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

Способ храненияКогда применятьОграничение
Константа (Булево)Глобальное включение функции для всей базыОдно значение на всю информационную базу
Реквизит справочникаНастройка в разрезе организаций, складовТребуется параметризуемая опция
Без храненияОпция, вычисляемая от других опцийНельзя редактировать напрямую

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

Константа

Подходит для простых глобальных настроек: валютный учёт, многоскладской учёт. Ограничение — одно значение на всю базу.

Параметризуемая опция

Подходит, когда функция включается для отдельных организаций или складов. Ограничение — сложнее в настройке и отладке.

Опция без хранения

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

Пошаговое создание функциональной опции в конфигураторе

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

Порядок действий
  1. 1
    Создайте константу с типом «Булево», например «ВестиУчетПоСкладам», и задайте ей понятное представление.
  2. 2
    В ветке «Общие» → «Функциональные опции» добавьте новую опцию и дайте ей имя, отражающее смысл функциональности.
  3. 3
    В свойстве «Хранение» укажите созданную константу.
  4. 4
    В свойстве «Состав» отметьте флажками объекты метаданных (справочники, документы, отчёты, команды), которые должны зависеть от опции.
  5. 5
    При необходимости добавьте в состав опции соответствующие подсистемы, чтобы разделы скрывались из панели разделов.
  6. 6
    Обновите конфигурацию базы данных (F7) и проверьте поведение в режиме предприятия.

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

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

Управление интерфейсом и отображением объектов

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

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

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

bsl
Если ПолучитьФункциональнуюОпцию("ВестиУчетПоСкладам") Тогда
    // логика складского учёта
КонецЕсли;

Проверка результата после настройки

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

Контрольные точки

Как проверить результат

Видимость объектов
Норма

При включённой опции объекты видны, при выключенной — скрыты

Тревожный признак

Объекты видны всегда или не видны никогда

Значение константы
Норма

Константа сохраняется и читается в пользовательском режиме

Тревожный признак

Значение сбрасывается или недоступно для редактирования

Программная проверка
Норма

ПолучитьФункциональнуюОпцию возвращает актуальное значение

Тревожный признак

Функция возвращает устаревшее значение до перезапуска сеанса

Исторические данные
Норма

Документы, введённые ранее, открываются и проводятся корректно

Тревожный признак

После отключения опции старые документы недоступны

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

Типичные ошибки и ограничения механизма

Типичные ошибки
01
Опция создана, но в свойстве «Состав» не отмечены объекты — в результате опция ничем не управляет и бесполезна.
02
Использование опции вместо ролей для разграничения прав — пользователи получают либо слишком широкий, либо слишком узкий доступ.
03
Отключение опции при наличии введённых данных без анализа последствий — исторические документы теряются из виду, а отчёты перестают их учитывать в интерфейсе.
04
Противоречивые значения связанных опций — например, расширенный учёт включён, а базовый выключен, что приводит к ошибкам в коде.
05
Изменение состава опции без обновления конфигурации базы данных — изменения не вступают в силу, и разработчик ищет ошибку не там.

Ещё одно ограничение: функциональные опции влияют на интерфейс и доступность команд, но не удаляют объекты из конфигурации. Запросы и код, обращающиеся к «отключённым» объектам напрямую, продолжат работать. Если требуется полное исключение функциональности, условия нужно дублировать в коде через ПолучитьФункциональнуюОпцию.

Часто задаваемые вопросы

Можно ли создать функциональную опцию без программирования?

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

Почему объект не скрывается, хотя опция выключена?

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

Что произойдёт с данными при отключении опции?

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

Чем функциональная опция отличается от роли?

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

Можно ли сделать опцию, зависящую от другой опции?

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

Работают ли функциональные опции в обычных формах?

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

Итог

Что важно запомнить

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