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