Разработка и Конфигурация · 11 мин
Функциональные опции в 1С: назначение и практика настройки
Что такое функциональные опции в 1С, зачем они нужны, как включить и настроить их в типовых конфигурациях и при разработке. Практические примеры и ошибки.
Функциональная опция в 1С — это механизм платформы, который позволяет включать и отключать отдельные блоки функциональности конфигурации без изменения кода. Типовая конфигурация из коробки содержит сотни разделов: валютный учёт, розничная торговля, производство, характеристики номенклатуры, несколько складов. Не каждой организации нужно всё сразу, и функциональные опции решают эту задачу — администратор отмечает нужные возможности, а система сама прячет лишние команды, поля и разделы интерфейса.
Для пользователя это означает чистый интерфейс без неиспользуемых кнопок и меньше ошибок при вводе данных. Для разработчика и внедренца — способ поставлять одну конфигурацию для разных сценариев работы, не создавая отдельные версии. Для бизнеса — экономия на обучении персонала и меньший риск заполнения «не тех» реквизитов.
Механизм работает на двух уровнях. В типовых решениях (1С:Бухгалтерия, Управление торговлей, ERP) функциональные опции уже созданы разработчиками фирмы «1С» — остаётся только включить нужные в настройках. В собственных и доработанных конфигурациях опции создаются в конфигураторе и привязываются к объектам метаданных, реквизитам и командам.
Как устроен механизм функциональных опций
Функциональная опция — это объект метаданных в дереве конфигурации (ветка «Общие» → «Функциональные опции»). У опции есть имя, тип значения (чаще всего булево — «включено/выключено») и хранилище значения: константа, ресурс регистра сведений или реквизит справочника. Когда администратор меняет настройку в интерфейсе, фактически записывается значение в это хранилище.
Ключевое свойство опции — «Состав». В него включают объекты, которыми опция управляет: справочники, документы, отдельные реквизиты, команды, роли, подсистемы. Если опция выключена, платформа не отображает связанные объекты в интерфейсе: команды исчезают из меню, поля — из форм, разделы — из панели навигации. При этом сами данные в базе не удаляются — они просто становятся невидимыми.
Есть и параметризуемые функциональные опции — они зависят от значения параметра, например от конкретной организации или склада. Так можно включить ордерный склад для одного склада и выключить для другого. Параметр задаётся через отдельный объект «Параметры функциональных опций».
Что функциональные опции дают на практике
Первая практическая ценность — упрощение интерфейса. В «1С:Бухгалтерии 8» при выключенной опции валютного учёта исчезают поля «Валюта», курсы валют и связанные отчёты. Бухгалтер, который работает только с рублями, не видит лишних реквизитов и не может случайно их заполнить.
Вторая задача — поэтапное внедрение. Компания может начать с базового учёта, а через несколько месяцев включить серии номенклатуры, характеристики или подсистему производства. Для этого не нужно обновлять или менять конфигурацию — достаточно изменить настройки, и соответствующие разделы появятся в интерфейсе.
Третья задача — управление правами и видимостью в связке с ролями. Функциональные опции не заменяют права доступа, но дополняют их: опция убирает функциональность целиком для всех, а роли разграничивают доступ между пользователями. Совместное использование даёт гибкую модель: раздел скрыт полностью или доступен только нужным сотрудникам.
Где настраиваются опции в типовых конфигурациях
В типовых решениях на Библиотеке стандартных подсистем настройки собраны в разделе «НСИ и администрирование» (в старших конфигурациях) или «Администрирование» (в 1С:Бухгалтерии). Типичные группы настроек: «Организации», «Склад», «Закупки», «Продажи», «Настройка номенклатуры», «Казначейство», «Зарплата и кадры».
Например, в «1С:Управление торговлей» флажок «Ордерные склады» находится в разделе «НСИ и администрирование» → «Настройка НСИ и разделов» → «Склад и доставка». После его установки в документах появляются поля распоряжений и статусы, а в меню — документы «Приходный ордер на товары» и «Расходный ордер на товары». В «1С:Бухгалтерии» учёт по нескольким организациям, валютные операции и торговля включены через раздел «Главное» → «Функциональность».
Изменения применяются сразу после записи настроек, но пользователям, которые уже работают в базе, может потребоваться перезапуск сеанса или обновление интерфейса, чтобы увидеть новые разделы. В клиент-серверном режиме иногда помогает команда «Обновить интерфейс» в меню «Вид».
- 1Откройте раздел «НСИ и администрирование» (или «Администрирование») с правами администратора.
- 2Перейдите в нужную группу настроек — например, «Склад и доставка» или «Настройка номенклатуры».
- 3Установите флажок требуемой опции и дождитесь записи настройки.
- 4Обновите интерфейс или перезайдите в программу.
- 5Проверьте, что появились ожидаемые разделы, документы и поля, и что они работают на тестовом примере.
Как создать функциональную опцию в конфигураторе
В собственной разработке опция создаётся через ветку «Общие» → «Функциональные опции». Для булевой опции обычно сначала создают константу, например «ИспользоватьСерииНоменклатуры» с типом «Булево», а затем в свойстве «Хранение» опции указывают эту константу. После этого в свойство «Состав» добавляют объекты, которыми опция управляет.
В состав можно включать не только целые объекты, но и отдельные реквизиты, табличные части, команды форм и элементы командного интерфейса. Это позволяет точечно управлять видимостью: например, поле «Серия» в табличной части документа будет показываться только при включённом учёте серий.
Чтобы пользователь мог менять значение опции из интерфейса, константу выводят на форму настроек. В типовых подсистемах для этого используют общие формы настроек из БСП, в простых конфигурациях — собственную форму с флажками, привязанными к константам.
Не включайте в состав опции объекты, которые участвуют в обязательных механизмах проведения других документов. Если скрытый объект всё равно нужен коду, проверки и движения продолжат работать «втихую», и расследование расхождений в учёте станет заметно сложнее.
Ограничения и риски при работе с опциями
Функциональная опция влияет на интерфейс, но не блокирует программный доступ. Код, который обращается к реквизиту из выключенной опции, продолжит выполняться — значение будет записано в базу, хотя пользователь его не видит. Поэтому в доработках важно проверять значение опции программно через метод ПолучитьФункциональнуюОпцию(), а не полагаться только на скрытие полей.
Второй риск — выключение опции после того, как по ней уже накоплены данные. Документы перестанут отображаться, но остатки и движения в регистрах останутся. Если потом закрывать период или строить отчёты, можно получить «невидимые» суммы. Перед отключением опции стоит сформировать отчёты по соответствующему разделу и оценить объём накопленных данных.
Третье ограничение — производительность. Большое число опций с развесистым составом увеличивает время формирования интерфейса при запуске. Кроме того, параметризуемые опции требуют корректной установки параметров в сеансе, иначе видимость объектов может определяться неправильно.
Типичные ошибки и как их избежать
Самая частая ошибка администраторов — поиск «пропавшего» документа или поля, не догадываясь, что раздел выключен функциональной опцией. Если коллега видит документ, а вы нет, сначала проверьте настройки функциональности и права, а уже потом подозревайте сбой.
У разработчиков типичны три промаха: создание опции без константы-хранилища (значение негде сохранить), включение в состав только объекта, но не его команд интерфейса (раздел остаётся видимым в меню), и отсутствие программных проверок значения опции в коде проведения.
Как проверить результат настройки
После изменения опций пройдите короткий контрольный маршрут: откройте раздел, где должен появиться новый документ, создайте тестовый объект, проведите его и сформируйте связанный отчёт. Для выключенной опции проверка зеркальная: убедитесь, что команды исчезли, а существующие отчёты по другим разделам не изменились неожиданным образом.
Полезно проверять настройку под учётной записью обычного пользователя, а не администратора: у администратора часто включён полный доступ, и он видит объекты независимо от части ограничений. Тест под реальной ролью показывает интерфейс так, как его увидит сотрудник.
Как проверить результат
Документы и поля видны в интерфейсе и доступны для ввода
Раздел не появился даже после перезапуска сеанса — проверьте права и хранилище опции
Суммы по другим разделам не изменились
Появились расхождения — вероятно, остались скрытые движения по отключённому разделу
Код проверяет значение опции и не заполняет скрытые реквизиты
В базе появляются данные по выключенной функциональности
Частые вопросы о функциональных опциях
Чем функциональная опция отличается от прав доступа?
Опция управляет видимостью функциональности для всей базы или по параметру (организация, склад), а права — доступом конкретных пользователей к объектам. Опция отвечает на вопрос «используем ли мы эту возможность вообще», роли — «кому из сотрудников она разрешена». Механизмы дополняют друг друга и применяются совместно.
Удалятся ли данные, если выключить функциональную опцию?
Нет. Документы, справочники и движения в регистрах остаются в базе, они только перестают отображаться в интерфейсе. При повторном включении опции данные снова станут видимыми. Однако отчёты без настройки отборов могут продолжать учитывать эти скрытые движения.
Почему я включил опцию, а новый раздел не появился?
Чаще всего помогает перезапуск сеанса или команда «Обновить интерфейс». Если не помогло — проверьте права пользователя: доступ к разделу может быть закрыт ролью. В доработанных конфигурациях также стоит убедиться, что в состав опции включены команды интерфейса, а не только сами объекты.
Можно ли включить опцию только для одной организации в базе?
Да, для этого служат параметризуемые функциональные опции. Их значение хранится не в константе, а, например, в ресурсе регистра сведений с измерением «Организация» или в реквизите справочника. Тогда для одной организации учёт ведётся, а для другой — скрыт.
Нужно ли дорабатывать код при использовании опций в своей конфигурации?
Да, в местах, где логика зависит от включённой возможности. Платформа скрывает объекты в интерфейсе, но не отменяет выполнение кода. Используйте ПолучитьФункциональнуюОпцию() в обработчиках проведения и заполнения, чтобы программа не записывала данные по отключённой функциональности.
Влияет ли количество включённых опций на скорость работы?
Умеренно. Каждая опция с большим составом увеличивает объём вычислений при построении интерфейса при запуске сеанса. На типичных базах эффект незаметен, но в конфигурациях с сотнями опций и сложными параметризуемыми связями стоит следить за временем открытия сеанса и не плодить лишние опции.
Что важно запомнить
Функциональные опции включают и скрывают блоки функциональности 1С без доработки кода и без удаления данных. В типовых конфигурациях они настраиваются в разделе администрирования, в собственных — создаются в конфигураторе с константой-хранилищем и составом объектов. Перед отключением опции с накопленными данными делайте резервную копию и проверяйте отчёты, а в доработках проверяйте значение опции программно.