При разработке управляемых форм в 1С часто возникает необходимость в добавлении интерактивных элементов управления, которые позволяют пользователю быстро изменить какое-либо состояние или выбрать один из двух взаимоисключающих вариантов. Один из таких удобных элементов – переключатель в форме тумблера, который визуально напоминает физический выключатель или переключатель и интуитивно понятен пользователю. Давайте подробно разберем, как реализовать такой элемент на управляемой форме 1С.
Первоначально многие разработчики могут столкнуться с тем, что стандартные средства конфигуратора предлагают кнопочные переключатели или классические флажки, которые не всегда соответствуют желаемому виду тумблера. Мы выясним, какие настройки необходимо применить, чтобы получить именно тот вид, который имитирует двухпозиционный тумблер.
Начнем с анализа ситуации. Изначально мы можем попытаться добавить на форму обычный элемент «Поле» и связать его с числовым реквизитом. В свойствах такого поля, как правило, доступны виды «Авто», «Переключатель» и «Тумблер». Однако, при выборе «Переключатель» мы получаем классические радиокнопки, которые подходят для выбора одного из нескольких вариантов, но не для простого включения/выключения. Вариант «Тумблер» в данном контексте часто приводит к появлению набора кнопок, что также не всегда является желаемым двухпозиционным выключателем.
Основная сложность заключалась в том, что интуитивно мы могли бы ожидать, что для создания тумблера достаточно просто выбрать соответствующий вид для поля. Однако, в 1С есть нюансы, связанные с типом данных реквизита и специфическим свойством элемента формы.
Самый прямой и рекомендованный способ создать двухпозиционный переключатель в виде тумблера – это использовать элемент формы Поле флажка (Checkbox Field) и настроить его соответствующим образом. Ключевым моментом здесь является правильный выбор типа данных для связанного реквизита.
Создание булевого реквизита формы:
Для корректной работы двухпозиционного тумблера связанный с ним реквизит формы должен быть обязательно булевого типа. Булевый тип данных в 1С (Истина/Ложь) идеально подходит для представления состояний «включено/выключено», «да/нет», «активно/неактивно».
Мы открываем форму в конфигураторе, переходим на вкладку «Реквизиты» и создаем новый реквизит. Кстати, добавление реквизитов и элементов формы можно выполнять значительно быстрее. В его свойствах в поле «Тип» мы выбираем «Булево».
Почему булевый тип? Хотя технически можно использовать числовой реквизит (где 0 соответствует снятому флажку, а 1 – установленному), булевый тип является более естественным и семантически правильным для такого вида элемента управления. Это упрощает логику обработки значения и делает код более читаемым.
Добавление реквизита на форму:
После создания булевого реквизита, мы перетаскиваем его с вкладки «Реквизиты» на макет формы. 1С автоматически создаст элемент формы с видом Поле флажка (Checkbox Field).
Настройка свойства «ВидФлажка»:
Выделяем только что созданный элемент формы на макете (для этого также может быть полезен редактор форм в режиме предприятия) — для этой задачи есть конструктор пользовательских интерфейсов и рабочих столов для 1С. В окне «Свойства» этого элемента находим свойство ВидФлажка (Checkbox Type). Изначально оно может быть установлено в «Авто» или «Переключатель». Нам необходимо изменить его на «Выключатель» (Toggle Switch).
Именно значение «Выключатель» преобразует обычный флажок в визуально привлекательный тумблер, который мы ищем, особенно если вы используете набор из 30 тем для интерфейса. Это свойство специально предназначено для отображения булевых значений в виде интерактивного переключателя.
// Пример настройки свойства в конфигураторе (визуально, не кодом)
// Для элемента формы "ПолеФлажка1":
// ВидФлажка = Выключатель
Настройка текстовых представлений (опционально):
По умолчанию тумблер для булевого реквизита может отображать системные подписи «Истина» и «Ложь» при наведении или изменении. Если нам требуются более привычные или локализованные подписи, например, «Вкл» / «Выкл», «Да» / «Нет», мы можем изменить их. Для этого мы выбираем элемент формы на макете и в окне «Свойства» находим свойство ФорматРедактирования. На закладке «Булево» этого свойства мы можем задать произвольные строки для представления значений «Истина» и «Ложь», а для более сложного оформления текста пригодится генератор форматированной строки.
Например, мы можем указать, что для Истина текст будет «Активно», а для Ложь – «Неактивно».
Важно учитывать, что выбранный режим совместимости или интерфейс платформы может влиять на стандартное расположение заголовков элементов управления:
Поле переключателя, о котором поговорим далее), то в интерфейсе «Версия 8.5» заголовок можно вывести только сверху или слева.Мы должны иметь это в виду при проектировании интерфейса, чтобы избежать нежелательных смещений элементов и обеспечить удобство для пользователя.
Помимо «Поля флажка» с видом «Выключатель», в 1С также существует элемент Поле переключателя (Radio Button Field), который тоже имеет свойство, позволяющее отображать его в виде тумблера. Однако, этот вариант предназначен для других сценариев – когда значение реквизита ограничено небольшим количеством взаимоисключающих вариантов, а не только двумя.
Давайте разберем, когда и как использовать этот вариант:
Тип данных реквизита:
Для Поля переключателя мы создаем реквизит формы типа Число или Строка, в зависимости от того, какие значения будут использоваться для вариантов выбора.
Заполнение «Списка выбора»:
Для этого реквизита необходимо заполнить свойство СписокВыбора (Choice List). Мы добавляем в этот список желаемые варианты, каждый из которых будет представлен как отдельная кнопка в тумблере. Для каждого элемента списка мы указываем «Значение» (которое будет записываться в реквизит) и «Представление» (которое будет отображаться на кнопке).
Настройка свойства «Вид переключателя»:
Перетаскиваем реквизит на форму. 1С создаст элемент Поле переключателя. В его свойствах мы находим свойство ВидПереключателя и устанавливаем его в значение «Тумблер».
В этом случае, вместо классических радиокнопок, мы получим группу кнопок, каждая из которых соответствует одному варианту из СпискаВыбора. Выбранный вариант будет визуально выделен.
Рекомендации по использованию «Поля переключателя» с видом «Тумблер»:
Мы рекомендуем использовать этот вид тумблера в ситуациях, когда выбор значения приводит к изменению состава или расположения элементов на форме. Он визуально похож на кнопку и своим видом показывает, что при нажатии что-то произойдет, изменяя интерфейс.
Мы должны стремиться, чтобы количество кнопок в таком тумблере было небольшим (обычно не более 3-4), а их названия – краткими. Если количество вариантов большое или названия длинные, лучше использовать выпадающий список (Поле со списком) для сохранения компактности и удобства формы.
Независимо от того, какой способ создания тумблера мы выбрали (Поле флажка или Поле переключателя), мы можем обрабатывать изменение его значения. Для этого необходимо создать обработчик события ПриИзменении (OnChange) для соответствующего элемента формы — для этой задачи есть расширение для гибкой настройки интерфейса и поведения управляемых форм.
Например, если мы хотим выполнять какие-то действия при изменении состояния нашего двухпозиционного тумблера, связанного с булевым реквизитом НастройкаВключена, мы можем сделать следующее:
Выделяем элемент формы «ПолеФлажкаНастройкаВключена» в конфигураторе.
В окне «Свойства» переходим на вкладку «События».
Находим событие ПриИзменении и нажимаем кнопку открытия (лупу) для создания обработчика на клиенте (и, при необходимости, на сервере).
В созданном обработчике мы можем получить текущее значение реквизита и выполнить нужную логику:
&НаКлиенте
Процедура НастройкаВключенаПриИзменении(Элемент)
Если НастройкаВключена Тогда
Сообщить("Настройка включена!");
// Дополнительная логика, например, отображение других полей
// Элементы.ГруппаДополнительныхНастроек.Видимость = Истина;
Иначе
Сообщить("Настройка выключена.");
// Скрытие дополнительных полей
// Элементы.ГруппаДополнительныхНастроек.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
Таким образом, мы можем динамически изменять поведение формы или выполнять другие операции в зависимости от выбора пользователя.
Мы успешно рассмотрели, как добавить двухпозиционный переключатель в форме тумблера на управляемую форму 1С. Ключевым и наиболее подходящим решением для двухпозиционного выбора является использование булевого реквизита в связке с элементом формы Поле флажка, у которого свойство ВидФлажка установлено в Выключатель. Этот подход обеспечивает чистый, семантически верный и визуально привлекательный способ реализации двух состояний.
Мы также изучили альтернативный вариант с использованием Поля переключателя с видом Тумблер, который подходит для выбора из нескольких взаимоисключающих вариантов. Важно понимать разницу между этими двумя подходами и применять каждый из них в соответствующей ситуации.
Следуя этим шагам и рекомендациям, мы можем значительно улучшить пользовательский интерфейс наших управляемых форм, делая их более интуитивно понятными и удобными в использовании.