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

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

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

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

Выясним причину неудобства работы с наложенными панелями

В редакторе обычных форм платформы «1С:Предприятие» выделение мышью работает строго по верхнему графическому слою. Когда одна командная панель перекрывает другую:

  1. Клики мышью и горячие клавиши не позволяют визуально «вытащить» нижнюю панель на передний план в самом редакторе.
  2. Изменение размеров «на лету» (когда верхнюю панель уменьшают, редактируют нижнюю, а затем растягивают верхнюю обратно) часто приводит к слёту настроек автоматических и пользовательских привязок границ. В результате при изменении размеров окна пользователем интерфейс формы начинает отображаться некорректно.

Рассмотрим проверенные практики и альтернативные варианты верстки, которые позволяют решить эту проблему без рисков для визуального оформления.

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

Самый удобный и наглядный вариант в Конфигураторе — поместить обе командные панели на разборные страницы обычного элемента Панель.

Проанализируем порядок действий:

  1. Добавляем на форму элемент управления Панель.
  2. Создаем у нее две страницы (например, «Панель 1» и «Панель 2»).
  3. На каждую страницу помещаем соответствующую командную панель. В Конфигураторе мы сможем легко переключаться между ними, просто кликая по закладкам страниц.
  4. В коде модуля формы при открытии (в событии ПриОткрытии) или при смене режима программно отключаем отображение закладок страниц у панели:
    
    ЭлементыФормы.ОсновнаяПанельСтраниц.ОтображениеЗакладок = ОтображениеЗакладокПанели.НеИспользовать;
    
  5. Программно переключаем активную страницу в зависимости от условий работы:
    
    Если УсловиеРаботы Тогда
        ЭлементыФормы.ОсновнаяПанельСтраниц.ТекущаяСтраница = ЭлементыФормы.ОсновнаяПанельСтраниц.Страницы.Страница1;
    Иначе
        ЭлементыФормы.ОсновнаяПанельСтраниц.ТекущаяСтраница = ЭлементыФормы.ОсновнаяПанельСтраниц.Страницы.Страница2;
    КонецЕсли;
    

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

Способ 2. Вынос второй панели за пределы рабочей области формы

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

Рассмотрим алгоритм этого решения:

  1. В редакторе формы располагаем КоманднаяПанель1 в нужном месте, а КоманднаяПанель2 смещаем в сторону на свободное место. Обе панели остаются полностью доступными для добавления кнопок и настройки свойств.
  2. При запуске формы в процедуре ПриОткрытии программно совмещаем координаты второй панели с координатами первой:
    
    ЭлементыФормы.КоманднаяПанель2.Верх = ЭлементыФормы.КоманднаяПанель1.Верх;
    ЭлементыФормы.КоманднаяПанель2.Лево = ЭлементыФормы.КоманднаяПанель1.Лево;
    ЭлементыФормы.КоманднаяПанель2.Ширина = ЭлементыФормы.КоманднаяПанель1.Ширина;
    ЭлементыФормы.КоманднаяПанель2.Высота = ЭлементыФормы.КоманднаяПанель1.Высота;
    
  3. Управление видимостью панелей выполняем через свойство Видимость в зависимости от бизнес-логики.

Способ 3. Отказ от двух панелей в пользу единой панели

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

  1. Управление видимостью отдельных кнопок: Все кнопки выносятся на одну командную панель. В зависимости от условия в коде меняется свойство Видимость конкретных кнопок:
    
    ЭлементыФормы.ОсновнаяКоманднаяПанель.Кнопки.КнопкаСпецДействие.Видимость = УсловиеРаботы;
    
  2. Использование выпадающих подменю: Вместо создания дублирующих панелей команды группируются по смыслу в подменю (тип кнопки ТипКнопкиКоманднойПанели.Подменю).
  3. Динамическое создание кнопок: На форму помещается одна пустая панель, а состав кнопок формируется программно с помощью метода ЭлементыФормы.ОсновнаяПанель.Кнопки.Добавить().

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

← На главную