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

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

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

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

Способ 1: Использование элемента «Панель» как контейнера

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

  1. Добавим на форму элемент Панель.
  2. В свойствах панели на закладке «Основные» снимем галочку «Отображать закладки».
  3. На закладке «Вид» установим свойство «Рамка» в значение Нет (если нам нужна невидимая группа) или выберем подходящий стиль.
  4. Разместим необходимые поля ввода, надписи и флажки непосредственно «внутри» этой панели.

Теперь мы можем управлять видимостью всей группы одной строкой кода:


// Скрываем панель вместе со всеми дочерними элементами
ЭлементыФормы.ИмяВашейПанели.Видимость = Ложь;

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


// Пример обращения к полю на первой странице панели
ЭлементыФормы.ИмяВашейПанели.Страницы.Страница1.Элементы.ИмяПоля.Доступность = Ложь;

Способ 2: Механизм «Слои» формы

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

  1. Откроем свойства самой формы и перейдем на закладку «Слои».
  2. Добавим новый слой, например, с именем ГруппаДополнительно.
  3. Для каждого элемента формы, который должен войти в эту группу, в палитре свойств (закладка «Общие») укажем созданный слой в поле «Слой». Важно: элемент может принадлежать только одному слою.

Теперь для управления видимостью всей группы достаточно изменить видимость слоя:


// Включаем или выключаем видимость целого слоя
Форма.Слои.ГруппаДополнительно.Видимость = Истина;

Важный нюанс: в обычных формах по умолчанию всегда включен «Основной слой» (нулевой). Если вы программно управляете слоями, убедитесь, что логика их переключения не конфликтует с отображением основных реквизитов формы.

Способ 3: Программная группировка через свойство «Тег»

Если визуальное объединение не требуется, а нужно лишь быстро менять свойства группы элементов, разберем метод использования идентификаторов. У каждого элемента управления есть свойство Тег (Tag) — это произвольная строка, которую разработчик может использовать по своему усмотрению.

Посмотрим на пример реализации:

  1. В конфигураторе для всех элементов, которые мы хотим объединить, в поле Тег напишем кодовое слово, например, Группа_Склад.
  2. Создадим общую процедуру в модуле формы:

Процедура УстановитьВидимостьГруппыСклад(ЗначениеВидимости)
    Для Каждого Элемент Из ЭлементыФормы Цикл
        Если Элемент.Тег = "Группа_Склад" Тогда
            Элемент.Видимость = ЗначениеВидимости;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

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

Способ 4: Геометрические привязки и «Рамка группы»

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

Разберем настройку привязок по шагам:

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

Хотя это не даст возможности скрыть группу одной командой Видимость = Ложь для рамки (скроется только сама линия рамки, но не поля), это обеспечит целостность визуального интерфейса при динамическом изменении формы.

Резюме

Выбор метода зависит от ваших целей:

Использование этих подходов позволит вам создавать гибкие и динамичные интерфейсы даже в рамках ограничений обычных форм 1С.

← На главную