Как скрыть определенный реквизит в автоматически генерируемой форме 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Использование прав доступа (Роли)

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

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

  1. Откройте конфигуратор и перейдите в ветку Роли.
  2. Выберите необходимую роль пользователя.
  3. В дереве объектов найдите нужный справочник и его реквизит.
  4. В колонке Просмотр снимите флажок для этого реквизита.

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

Управление через функциональные опции

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

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

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

  1. Создайте Функциональную опцию (например, ИспользоватьМегаадминскиеРеквизиты).
  2. В свойстве Состав этой опции выберите созданный вами «секретный» реквизит справочника.
  3. Установите значение Истина или Ложь в зависимости от прав или настроек пользователя.

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

Программное управление видимостью

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

Рассмотрим пример того, как можно скрывать элементы, содержащие определенный префикс в своем имени, при открытии любой формы:


// Пример логики в обработчике ПриСозданииНаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Для Каждого Элемент Из ЭтаФорма.Элементы Цикл
        Если Лев(Элемент.Имя, 10) = "TopSecret_" Тогда
            Элемент.Видимость = Ложь;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

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

Итоги и рекомендации

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

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

← На главную