Как реализовать вложенные группы страниц в управляемых формах 1С 8.3?

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

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

Алгоритм создания вложенной структуры страниц

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

  1. Создание корневой группы: Первым делом добавим в дерево элементов основную группу с типом ГруппаСтраницы. Это будет наш внешний контейнер, который отображает основные вкладки формы.
  2. Добавление основной страницы: Внутри созданной группы страниц добавим подчиненный элемент с типом ГруппаСтраница. Именно этот элемент является конкретной вкладкой.
  3. Создание вложенного контейнера: Чтобы внутри этой вкладки появились свои под-вкладки, мы должны внутрь элемента ГруппаСтраница снова добавить элемент с типом ГруппаСтраницы.
  4. Добавление вложенных страниц: И наконец, в этот внутренний контейнер мы добавляем необходимое количество элементов ГруппаСтраница, которые и станут вложенными вкладками.

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

Настройка визуального представления (DisplayMode)

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

Комбинируя эти свойства (например, внешние страницы — Закладки, а внутренние — Панель навигации), мы создаем понятную иерархию, которая не запутывает пользователя «матрешкой» из однотипных закладок.

Программное управление вложенными страницами

Выясним, как управлять такой структурой из кода. Часто требуется программно переключить пользователя на определенную вложенную вкладку при наступлении какого-либо события. Важно помнить, что свойство ТекущаяСтраница есть у каждой группы страниц в цепочке.

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


// Сначала активируем основную страницу во внешней группе
Элементы.ГруппаОсновныеСтраницы.ТекущаяСтраница = Элементы.ГруппаСтраницаСВложениями;

// Затем активируем конкретную под-страницу во внутренней группе
Элементы.ГруппаВложенныеСтраницы.ТекущаяСтраница = Элементы.ГруппаНужнаяПодСтраница;

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

Оптимизация производительности и компоновка

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

Альтернативные подходы согласно стандартам 1С

Несмотря на техническую возможность создания вложенных страниц, фирма 1С в своих методических рекомендациях советует рассмотреть альтернативные варианты, если форма становится слишком сложной. Давайте разберем, чем можно заменить глубокую вложенность:

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

← На главную