Рассмотрим распространенную задачу при разработке на платформе 1С: необходимо сделать интерфейс формы документа или справочника более лаконичным, скрыв второстепенные реквизиты. Однако нужно оставить возможность для опытных пользователей самостоятельно включать отображение этих элементов через стандартный механизм «Изменить форму». Проанализируем, почему простое программное скрытие не подходит и как правильно решить эту задачу.
Основная проблема заключается в том, что если в обработчике события ПриСозданииНаСервере написать код вроде Элементы.МойЭлемент.Видимость = Ложь;, то этот элемент не только скроется, но и полностью пропадет из списка доступных элементов в окне настройки формы. Пользователь никак не сможет его вернуть самостоятельно. Выясним, как добиться нужного поведения, используя стандартные средства.
Для решения именно этой задачи в платформе 1С существует специальный механизм — «Пользовательская видимость». Он позволяет разработчику задать состояние видимости элемента по умолчанию, но при этом оставляет его доступным для персональной настройки пользователем. Это идеальный инструмент для нашей ситуации.
Разберем по шагам, как его использовать:
Пользовательская видимость. Вы увидите, что рядом с ним есть кнопка с тремя точками. Нажмите на нее.Что произойдет в результате? Теперь при открытии формы данный элемент будет по умолчанию скрыт для всех пользователей. Однако, если пользователь зайдет в меню «Еще» (или «Все действия») -> «Изменить форму...», он увидит наш скрытый элемент в списке доступных полей и сможет поставить напротив него галочку. Платформа запомнит эту персональную настройку в системном хранилище, а для управления такими данными может пригодиться обработка для просмотра и очистки хранилища настроек пользователя.
Часто возникает заблуждение, что для использования «Пользовательской видимости» необходимо сложно настраивать права и создавать отдельные роли. Как мы видим из примера, это не так. Для установки состояния «скрыто по умолчанию» достаточно просто убрать соответствующие флажки для уже существующих ролей.
Давайте подробнее разберемся, почему прямое управление свойством Видимость в коде не дает нужного результата. Когда мы выполняем на сервере код:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.ГруппаДополнительныеРеквизиты.Видимость = Ложь;
КонецПроцедуры
Платформа интерпретирует это как полное исключение элемента из состава формы для текущего сеанса. Для механизма настройки формы этого элемента как бы не существует, поэтому он и не отображается в списке. Этот подход абсолютно корректен, но для других задач. Если же вам необходимо гибко манипулировать составом элементов, можно использовать конструктор управляемых форм.
Когда использовать программное скрытие:
Этот метод идеален для создания динамических интерфейсов, где видимость одних элементов зависит от значений других. Например, поле «Причина отказа» должно появляться только тогда, когда в поле «Статус заявки» выбрано значение «Отклонена». В этом случае логика управляется данными, а не желанием пользователя.
Это мощный декларативный механизм, который позволяет изменять внешний вид элементов (в том числе видимость, доступность, цвет) в зависимости от выполнения определенных условий, связанных с данными на форме. Это способ настроить логику отображения без написания кода.
Как это работает:
Условное оформление и откройте ее.Видимость и установите его значение в Ложь (сняв галочку).Объект.СуммаДокумента меньше 1000.Важно понимать: как и программное скрытие, условное оформление полностью убирает элемент, если условие выполняется. Для более тонкой настройки прямо в процессе работы программы можно использовать редактор форм в режиме предприятия.
Мы проанализировали несколько способов управления видимостью элементов на управляемых формах 1С. Правильный выбор метода зависит от поставленной задачи.
Подведем итог:
Видимость — ваш выбор для создания динамических интерфейсов, где видимость элементов зависит от других данных на форме или от действий пользователя в реальном времени.Грамотное использование этих инструментов позволяет создавать гибкие, удобные и не перегруженные интерфейсы, которые адаптируются как под задачи конкретного пользователя, так и под бизнес-логику работы с данными.