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

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

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

Основная проблема заключается в том, что если в обработчике события ПриСозданииНаСервере написать код вроде Элементы.МойЭлемент.Видимость = Ложь;, то этот элемент не только скроется, но и полностью пропадет из списка доступных элементов в окне настройки формы. Пользователь никак не сможет его вернуть самостоятельно. Выясним, как добиться нужного поведения, используя стандартные средства.

Основное решение: Механизм «Пользовательская видимость»

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

Разберем по шагам, как его использовать:

  1. Откройте нужную форму в Конфигураторе.
  2. В дереве элементов формы выделите тот элемент (или группу элементов), который вы хотите скрыть по умолчанию.
  3. В палитре свойств найдите свойство Пользовательская видимость. Вы увидите, что рядом с ним есть кнопка с тремя точками. Нажмите на нее.
  4. Откроется окно «Настройка пользовательской видимости». В этом окне будет представлен список всех ролей, определенных в вашей конфигурации.
  5. Ключевой момент: не нужно создавать новые роли или усложнять систему прав. Чтобы скрыть элемент по умолчанию для всех, просто снимите флажок в колонке «Видимость» для всех ролей в списке. Если у вас все пользователи работают под одной основной ролью (например, «ПолныеПрава»), достаточно снять флажок только для нее.
  6. Нажмите кнопку «ОК» и сохраните изменения в конфигурации.

Что произойдет в результате? Теперь при открытии формы данный элемент будет по умолчанию скрыт для всех пользователей. Однако, если пользователь зайдет в меню «Еще» (или «Все действия») -> «Изменить форму...», он увидит наш скрытый элемент в списке доступных полей и сможет поставить напротив него галочку. Платформа запомнит эту персональную настройку в системном хранилище, а для управления такими данными может пригодиться обработка для просмотра и очистки хранилища настроек пользователя.

Часто возникает заблуждение, что для использования «Пользовательской видимости» необходимо сложно настраивать права и создавать отдельные роли. Как мы видим из примера, это не так. Для установки состояния «скрыто по умолчанию» достаточно просто убрать соответствующие флажки для уже существующих ролей.

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

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


Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Элементы.ГруппаДополнительныеРеквизиты.Видимость = Ложь;
КонецПроцедуры

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

Когда использовать программное скрытие:

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

Альтернативные методы управления видимостью

Условное оформление

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

Как это работает:

  1. В редакторе формы в палитре свойств найдите коллекцию Условное оформление и откройте ее.
  2. Добавьте новый элемент условного оформления.
  3. На вкладке «Оформление» укажите, какое свойство нужно изменить. В нашем случае выберите свойство Видимость и установите его значение в Ложь (сняв галочку).
  4. На вкладке «Условие» задайте правило, при котором оформление сработает. Например, можно добавить условие, что реквизит Объект.СуммаДокумента меньше 1000.
  5. На вкладке «Оформляемые поля» выберите из списка те элементы формы, которые должны скрываться при выполнении условия.

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

Заключение и выводы

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

Подведем итог:

  1. Пользовательская видимость — используйте этот механизм, когда хотите скрыть элемент по умолчанию, но предоставить пользователю возможность включить его отображение через стандартные настройки формы («Изменить форму»). Если же требуется применить такие настройки принудительно для всех, изучите реализацию сохранения настроек формы для всех пользователей.
  2. Программное управление свойством Видимость — ваш выбор для создания динамических интерфейсов, где видимость элементов зависит от других данных на форме или от действий пользователя в реальном времени.
  3. Условное оформление — применяйте для декларативной настройки видимости, доступности и других свойств элементов на основе данных формы. Это удобный способ реализовать сложную логику без программирования, но он не предполагает пользовательской настройки видимости.

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

← На главную