Как скрыть колонки динамического списка по умолчанию, сохранив возможность их включения пользователем

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

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

Понимание разницы между «Видимостью» и «Пользовательской видимостью»

Для начала проанализируем, почему стандартное свойство Видимость (Visible) нам не подходит. В системе 1С существует жесткое разделение:

  1. Свойство «Видимость»: Если вы снимаете эту галочку в конфигураторе или программно устанавливаете Элементы.ИмяКолонки.Видимость = Ложь, платформа воспринимает это как указание вовсе не отрисовывать элемент. Он пропадает из состава формы «намертво», и пользователь не увидит его в списке доступных полей в окне настройки.
  2. Свойство «Пользовательская видимость»: Это «мягкое» управление. Оно определяет состояние флажка видимости по умолчанию для различных ролей или пользователей. Если здесь снять галочку, колонка будет скрыта при первом открытии, но она останется в структуре формы, и её можно будет включить вручную.

Способ 1: Настройка в конфигураторе через свойства элемента

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

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

Теперь при запуске приложения колонка будет отсутствовать на экране, но если пользователь нажмет «Еще» — «Изменить форму», он увидит эту колонку в списке и сможет поставить напротив неё галочку. В качестве альтернативного бескодового решения для детальной настройки прав и видимости полей можно использовать расширение для управления доступностью элементов формы.

Способ 2: Программное управление в процедуре ПриСозданииНаСервере

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Скрываем колонку по умолчанию, но оставляем доступ в настройках
    Элементы.СписокСуммаДокумента.ПользовательскаяВидимость = Ложь;
    
    // Если нужно скрыть колонку только для определенных условий
    Если НЕ РольДоступна("ПолныеПрава") Тогда
        Элементы.СписокОтветственный.ПользовательскаяВидимость = Ложь;
    КонецЕсли;

КонецПроцедуры

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

Роль флага «Использовать всегда» в динамическом списке

Разберем ситуацию, упомянутую в обсуждении: зачем нужен флаг «Использовать всегда» в настройках самого динамического списка (вкладка «Настройка списка» -> «Поля»).

Когда колонка скрыта (неважно, через Видимость или ПользовательскаяВидимость), платформа в целях оптимизации может исключить это поле из запроса к базе данных. Если значение этого поля вам нужно для расчетов, программного анализа строк или в Условном оформлении, система может выдать ошибку или не применить оформление, так как данных в выборке просто не будет.

Установка флага Использовать всегда гарантирует, что поле будет включено в SELECT запрос динамического списка независимо от настроек видимости элементов на форме. Однако этот флаг не управляет видимостью колонки в интерфейсе напрямую.

Проблема кэширования настроек (Почему изменения не видны?)

Часто программисты сталкиваются с тем, что настройки в конфигураторе сделаны правильно, но у пользователя колонка всё равно видна (или не появилась в настройках). Выясним причину этого поведения.

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

Что нужно сделать для проверки:

  1. В режиме «1С:Предприятие» откройте форму динамического списка.
  2. Перейдите в меню «Еще» — «Изменить форму».
  3. Нажмите кнопку «Установить стандартные настройки».

Только после сброса к настройкам по умолчанию система применит те параметры Пользовательской видимости, которые вы задали в разработке.

Влияние функциональных опций

Проанализируем еще один механизм — Функциональные опции. Если поле динамического списка или сам элемент формы привязаны к функциональной опции, и эта опция выключена в константах, то колонка исчезнет из интерфейса полностью, аналогично свойству Видимость = Ложь. Пользователь не сможет включить её через «Изменить форму», пока опция не будет активирована в системе. Это самый «сильный» метод скрытия, используемый для управления функциональностью всей программы.

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

Для достижения результата «скрыто по умолчанию, но доступно для выбора», придерживаемся следующего алгоритма:

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

← На главную