Разберем особенности проектирования интерфейса управляемых форм при необходимости встроить переключатель или тумблер непосредственно в заголовок группы элементов. Проанализируем системные ограничения платформы 1С:Предприятие 8.3 и рассмотрим практические способы решения этой задачи.
В обычном интерфейсе (неуправляемые формы) разработчики могли накладывать элементы друг на друга, задавая абсолютные координаты в пикселях. Это позволяло визуально расположить переключатель прямо поверх рамки группы.
В управляемом интерфейсе компоновка элементов выполняется автоматически потоковым механизмом. Встроить интерактивный элемент управления (флажок, поле переключателя или кнопку) внутрь стандартной рамки заголовка группы штатными свойствами невозможно. Свойство группы ПутьКДаннымЗаголовка позволяет передавать в заголовок исключительно текстовые значения реквизитов формы, но не интерактивные элементы диалога.
Рассмотрим доступные варианты реализации подобного пользовательского интерфейса.
Наиболее надежный и простой способ без привлечения сторонних технологий — собрать визуальный заголовок из стандартных элементов формы. Разберем по шагам, как это настроить:
Группировка значение Горизонтальная всегда или Горизонтальная если возможно.ПоложениеЗаголовка в значение Нет.ВидПереключателя в значение Тумблер или Кнопки. Список значений переключателя зададим через свойство СписокВыбора.ОтображениеЗаголовка = Ложь). В результате вся конструкция визуально воспринимается как единая панель с переключателем в верхней строке.Если переключатель в заголовке предназначен для переключения наборов реквизитов или режимов работы группы, используем элемент формы Группа - Страницы. Разберем реализацию программного переключения:
ОтображениеСтраниц в значение Нет.ПриИзменении нашего тумблера/переключателя переключим видимую страницу программно.Посмотрим на пример кода в модуле формы:
&НаКлиенте
Процедура ПереключательРежимаПриИзменении(Элемент)
Если РеквизитФормыРежим = 1 Тогда
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаРежим1;
Иначе
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаРежим2;
КонецЕсли;
КонецПроцедуры
Если требуется получить нестандартную рамку группы с интегрированным в заголовок переключателем, который в точности повторяет кастомный веб-дизайн, применим элемент ПолеHTMLДокумента.
Проанализируем процесс реализации:
Строка и свяжем его с элементом формы вида Поле HTML документа.<fieldset> и тега <legend> со встроенными радиокнопками или тумблером).ДокументСформирован / ПриНажатии.Посмотрим на пример инициализации разметки при создании формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
HTMLТекст =
"<html>
|<head>
|<style>
| fieldset { border: 1px solid #ccc; border-radius: 4px; padding: 10px; font-family: Arial; }
| legend { font-size: 12px; font-weight: bold; }
|</style>
|</head>
|<body>
| <fieldset>
| <legend>Настройки: <input type='radio' name='mode' value='1' checked> Вариант А <input type='radio' name='mode' value='2'> Вариант Б</legend>
| <div>Содержимое группы</div>
| </fieldset>
|</body>
|</html>";
РеквизитHTML = HTMLТекст;
КонецПроцедуры
Таким образом, для типовых прикладных решений рекомендуется использовать Способ 1 и Способ 2 со стандартным тумблером и горизонтальными группами, а Способ 3 применять только при строгих требованиях к нестандартному графическому оформлению.