К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как создать переключатель в 1С

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

Переключатель в 1С — это элемент формы, который позволяет пользователю выбрать один вариант из нескольких взаимоисключающих. Визуально он выглядит как группа круглых кнопок (radio buttons), где активной может быть только одна. Такой элемент используют, когда вариантов немного — обычно от двух до пяти — и все они должны быть видны на форме одновременно.

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

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

Когда переключатель подходит, а когда лучше выбрать другой элемент

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

Не стоит путать переключатель с флажком. Флажок управляет одним булевым значением («да/нет»), а переключатель — выбором одного значения из нескольких. Если на форме несколько независимых опций, которые можно включать одновременно, нужны флажки, а не группа переключателей.

Сравнение вариантов

Переключатель

2–5 взаимоисключающих варианта, все должны быть видны сразу

Поле со списком выбора

Вариантов много или список может расширяться; экономит место на форме

Флажок

Одна независимая опция с двумя состояниями: включено или выключено

Создание реквизита для хранения выбранного значения

Основа переключателя — реквизит, в котором хранится выбранное значение. Если вариант выбора относится к данным объекта (например, способ доставки в заказе), создайте реквизит объекта конфигурации: откройте объект в конфигураторе, перейдите на вкладку «Данные» и добавьте реквизит. Для нумерованных вариантов удобен тип «Число» длиной 1–2 знака без дробной части; для осмысленных кодов — «Строка» небольшой длины.

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

Полезно сразу задать значение по умолчанию. Для реквизита объекта это делается в свойстве «Значение заполнения», для реквизита формы — в обработчике «ПриСозданииНаСервере» присваиванием начального значения. Без значения по умолчанию при открытии формы ни один вариант не будет отмечен, что может запутать пользователя.

Добавление элемента переключателя на форму

Откройте форму объекта в конфигураторе. В панели реквизитов найдите созданный реквизит и перетащите его в дерево элементов формы в нужное место. По умолчанию платформа создаст обычное поле ввода — его нужно преобразовать в переключатель.

Выделите добавленный элемент и откройте палитру свойств. Найдите свойство «Вид» и установите значение «Поле переключателя». После этого станет доступным свойство «Список выбора» — именно оно определяет, какие варианты увидит пользователь.

Откройте редактор списка выбора и добавьте строки: в колонке «Значение» укажите значение, которое запишется в реквизит (например, 0, 1, 2), а в колонке «Представление» — текст, который увидит пользователь («Самовывоз», «Курьер», «Почта»). Порядок строк в списке определяет порядок кнопок на форме.

Порядок действий
  1. 1
    Создайте реквизит объекта или формы с числовым либо строковым типом
  2. 2
    Перетащите реквизит в дерево элементов формы
  3. 3
    В палитре свойств установите вид «Поле переключателя»
  4. 4
    Заполните список выбора парами «значение — представление»
  5. 5
    Задайте значение по умолчанию в свойствах или в обработчике ПриСозданииНаСервере
  6. 6
    Сохраните конфигурацию и проверьте форму в режиме предприятия

Настройка внешнего вида группы переключателей

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

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

Если переключатель должен быть недоступен для редактирования в определённых ситуациях — например, после проведения документа — используйте свойство «ТолькоПросмотр» элемента или управляйте доступностью программно через свойство «Доступность».

Программная обработка выбора

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

Типичный пример: при выборе способа доставки «Курьер» нужно показать поле адреса, а при «Самовывозе» — скрыть. В обработчике достаточно проверить значение реквизита и установить видимость соответствующего элемента формы.

bsl
&НаКлиенте
Процедура СпособДоставкиПриИзменении(Элемент)
	Элементы.АдресДоставки.Видимость = (СпособДоставки = 1);
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Если Не ЗначениеЗаполнено(Объект.СпособДоставки) Тогда
		Объект.СпособДоставки = 0; // самовывоз по умолчанию
	КонецЕсли;
КонецПроцедуры

Если логика зависит от значения переключателя при открытии формы, не забудьте вызвать ту же настройку видимости в «ПриСозданииНаСервере» или «ПриОткрытии». Иначе при открытии существующего объекта форма покажет элементы, не соответствующие сохранённому значению, до первого ручного переключения.

Удобно оформить настройку видимости отдельной серверной или клиентской процедурой, например УстановитьВидимостьЭлементов(), и вызывать её и из обработчика ПриИзменении, и при открытии формы. Так логика не дублируется.
ПЗ
Практическое замечание

Проверка результата и типичные ошибки

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

Типичные ошибки
01
Реквизит не добавлен в дерево элементов формы — переключатель не отображается вообще
02
Не заполнен список выбора — элемент выглядит пустым или как обычное поле ввода
03
Значения в списке выбора не совпадают по типу с реквизитом — выбор не сохраняется или сбрасывается
04
Настройка видимости срабатывает только ПриИзменении — при открытии существующего объекта форма выглядит неверно
05
Отдельный булев реквизит под каждый вариант — возможны противоречивые состояния с несколькими отметками
Контрольные точки

Как проверить результат

Отображение
Норма

Все варианты видны, отмечен ровно один

Тревожный признак

Пустой элемент или обычное поле ввода вместо кнопок

Сохранение
Норма

После записи и повторного открытия выбран нужный вариант

Тревожный признак

Значение сбрасывается на значение по умолчанию

Связанная логика
Норма

Элементы показываются/скрываются сразу при переключении и при открытии формы

Тревожный признак

Видимость меняется только после ручного переключения

Ограничения и альтернативные подходы

Стандартный переключатель не подходит, если список вариантов динамический и формируется из данных базы — например, из справочника. В этом случае список выбора придётся заполнять программно в «ПриСозданииНаСервере» через свойство СписокВыбора элемента, либо использовать поле ввода с кнопкой списка выбора, связанное со ссылочным реквизитом.

Для переключения между страницами или режимами просмотра иногда удобнее использовать элемент «Группа — страницы» с закладками или переключатель вида «Тумблер» в мобильном клиенте. В обычных формах (толстый клиент, устаревшие конфигурации) переключатель создаётся похожим образом, но через свойства элемента управляемой формы недоступны — там используется отдельный механизм с реквизитом и первым элементом группы.

Итог

Что важно запомнить

Переключатель в 1С — это реквизит плюс элемент формы с видом «Поле переключателя» и заполненным списком выбора. Задайте значение по умолчанию, обрабатывайте событие ПриИзменении и не забывайте применять ту же логику при открытии формы.

Частые вопросы

Можно ли сделать переключатель без реквизита объекта?

Да. Если выбранное значение не нужно хранить в базе, создайте реквизит формы и свяжите переключатель с ним. Такой вариант подходит для настроек отображения, режимов работы обработки или отчёта.

Почему переключатель отображается как обычное поле ввода?

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

Как программно изменить выбранный вариант?

Достаточно присвоить реквизиту нужное значение из списка выбора, например: СпособДоставки = 1. Переключатель на форме обновится автоматически. Если от значения зависит видимость элементов, вызовите после присваивания процедуру настройки видимости.

Как добавить варианты в список выбора программно?

Через свойство СписокВыбора элемента формы: Элементы.СпособДоставки.СписокВыбора.Добавить(1, "Курьер"). Обычно это делают в обработчике ПриСозданииНаСервере, когда состав вариантов зависит от данных или настроек.

Сколько вариантов разумно размещать в переключателе?

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

Можно ли расположить варианты переключателя горизонтально?

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