Разработка и Конфигурация · 10 мин
Как добавить переключатель на форму в 1С
Как добавить переключатель в 1С: настройка поля переключателя в конфигураторе, выбор источника данных, варианты отображения, типичные ошибки и проверка результата.
Переключатель в 1С — это элемент формы, который позволяет пользователю выбрать одно значение из нескольких взаимоисключающих вариантов. В классических формах он называется «Поле переключателя», а в управляемых формах чаще всего реализуется через поле с видом «Поле переключателя» или через поле с переключателями-флажками. Типичные сценарии: выбор способа доставки, типа цены, варианта расчёта, режима работы обработки.
Механика добавления переключателя зависит от того, где вы работаете: в типовой конфигурации через механизм расширений и настроек формы, в собственной конфигурации через конфигуратор или в произвольной обработке. Ниже разобраны основные способы — от простого добавления элемента на форму до программного создания переключателя кодом.
Важно понимать: переключатель всегда связан с источником данных — реквизитом объекта, реквизитом формы или переменной, в которую записывается выбранное значение. Без привязки к данным элемент будет отображаться, но выбор пользователя нигде не сохранится.
Где в 1С используется переключатель и как он устроен
Переключатель (radio button) отображает группу вариантов, из которых можно выбрать только один. В отличие от флажка, который работает независимо, переключатели объединены в группу общим источником данных: какое значение записано в реквизит — тот вариант и активен.
В управляемых формах 1С:Предприятия 8.3 элемент называется «Поле» с видом «Поле переключателя». В обычных формах (старые конфигурации на 8.2 и ранних 8.3) существовал отдельный элемент «Переключатель». Принцип одинаковый: элемент привязан к данным, а каждому варианту соответствует конкретное значение.
Тип реквизита определяет, какие значения можно использовать. Чаще всего применяют число (варианты 0, 1, 2...), строку или ссылку на перечисление. Перечисление удобнее всего: значения читаемы в коде, а список выбора можно заполнить автоматически.
Подготовка: создание реквизита для хранения значения
Прежде чем добавлять сам переключатель, определите, где будет храниться выбранное значение. Если переключатель влияет на данные объекта (например, признак в документе или справочнике), добавьте реквизит объекта в конфигураторе. Если выбор нужен только на время работы с формой — например, в обработке — достаточно реквизита формы.
Для реквизита формы откройте форму в конфигураторе, перейдите на вкладку «Реквизиты» в правой части редактора формы и нажмите «Добавить». Укажите имя (например, «СпособДоставки») и тип данных. Для двух-трёх вариантов подойдёт число или строка; для устойчивого кода лучше создать перечисление в ветке «Перечисления» дерева конфигурации.
Если переключатель должен сохранять значение между сеансами, реквизит формы не подойдёт — он очищается при закрытии. В этом случае используйте реквизит объекта, константу или хранилище общих настроек.
Добавление переключателя на форму через конфигуратор
Основной способ — визуальное добавление элемента в редакторе формы. Откройте нужную форму объекта или обработки, найдите в панели реквизитов созданный реквизит и перетащите его в дерево элементов формы в нужное место — например, внутрь группы.
По умолчанию платформа может создать поле ввода. Чтобы превратить его в переключатель, выделите элемент, откройте палитру свойств (правый клик — «Свойства») и установите свойство «Вид» в значение «Поле переключателя». После этого у элемента появится свойство «Список выбора».
Откройте «Список выбора» и добавьте варианты: для каждого укажите значение (то, что запишется в реквизит) и представление (текст, который увидит пользователь). Например, значение 0 — «Самовывоз», значение 1 — «Курьером». Количество вариантов в списке определит количество позиций переключателя.
- 1Откройте форму в конфигураторе и добавьте реквизит формы или используйте реквизит объекта
- 2Перетащите реквизит из панели реквизитов в дерево элементов формы
- 3В свойствах элемента установите вид «Поле переключателя»
- 4Заполните список выбора: значение и представление для каждого варианта
- 5Сохраните конфигурацию, обновите конфигурацию базы данных и проверьте форму в режиме предприятия
Настройка отображения и поведения
После добавления элемента полезно настроить его внешний вид. Свойство «Положение заголовка» управляет подписью группы, а расположение вариантов зависит от ширины элемента и настроек группы-родителя. Если варианты должны идти вертикально, поместите поле в группу с вертикальной группировкой.
Для реакции на изменение переключателя используется событие «ПриИзменении». В палитре свойств нажмите кнопку открытия обработчика рядом с событием — платформа создаст процедуру в модуле формы. Внутри можно менять видимость других элементов, пересчитывать итоги или заполнять связанные поля.
Значение по умолчанию задаётся через сам реквизит: присвойте ему нужное значение в событии «ПриСозданииНаСервере» формы. Если реквизит пустой и его значение не входит в список выбора, ни один вариант не будет отмечен — это допустимо, но для обязательного выбора лучше сразу установить значение.
Программное создание переключателя кодом
Иногда элемент нужно создать динамически — например, когда набор вариантов зависит от данных и заранее неизвестен. В управляемой форме это делается в обработчике «ПриСозданииНаСервере» через коллекцию «Элементы» формы.
Сначала программно добавьте реквизит формы через метод «ИзменитьРеквизиты», затем создайте элемент: НовыйЭлемент = Элементы.Добавить("СпособДоставки", Тип("ПолеФормы"), Родитель);. Установите ему вид поля переключателя, путь к данным и заполните список выбора через НовыйЭлемент.СписокВыбора.Добавить(Значение, Представление).
Программный способ требует аккуратности: элементы, созданные кодом, не видны в редакторе формы, и коллегам будет сложнее разобраться в логике. Используйте его только когда статическое размещение действительно невозможно.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НовыйЭлемент = Элементы.Добавить("СпособДоставки", Тип("ПолеФормы"), Элементы.ГруппаПараметры);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеПереключателя;
НовыйЭлемент.ПутьКДанным = "СпособДоставки";
НовыйЭлемент.СписокВыбора.Добавить(0, "Самовывоз");
НовыйЭлемент.СписокВыбора.Добавить(1, "Курьером");
КонецПроцедурыПереключатель в типовой конфигурации без изменения кода
Если вы работаете с типовой конфигурацией (1С:Бухгалтерия, Управление торговлей и подобные), прямое изменение форм снимет конфигурацию с полной поддержки. Безопасная альтернатива — механизм расширений: в конфигураторе создайте расширение, добавьте в него заимствованную форму и разместите переключатель там.
Для хранения значения в расширении можно добавить собственный реквизит объекта (расширения позволяют расширять состав реквизитов) или использовать дополнительные реквизиты и сведения, предусмотренные в типовых конфигурациях. Второй вариант вообще не требует разработки, но отображается стандартным полем, а не переключателем.
Перед любой доработкой сделайте резервную копию информационной базы. Ошибка в расширении обычно не разрушает данные, но может помешать пользователям открыть форму до исправления.
Проверка результата и типичные ошибки
После настройки откройте форму в режиме 1С:Предприятие и проверьте: все ли варианты видны, отмечается ли нужный вариант при открытии, сохраняется ли выбор после записи и повторного открытия объекта. Для обработки проверьте, что значение реквизита реально используется в дальнейшей логике.
Частая ошибка — несовпадение типов: реквизит числовой, а в список выбора добавлены строки. Переключатель при этом отображается, но выбор «не держится». Другая типичная проблема — элемент добавлен, но у него не заполнен «Путь к данным»: тогда переключатель работает визуально, однако значение никуда не записывается.
Если переключатель не виден на форме, проверьте, не скрыт ли он настройками функциональных опций или видимостью родительской группы. Также убедитесь, что после изменения конфигурации выполнено обновление конфигурации базы данных (F7 в конфигураторе).
Как проверить результат
Все пункты списка выбора видны, активен ровно один
Часть вариантов отсутствует или отмечено несколько пунктов
После записи и повторного открытия выбранный вариант восстановлен
При повторном открытии переключатель сброшен
Обработчик ПриИзменении срабатывает и меняет связанные элементы
Переключение не влияет на поведение формы
Что важно запомнить
Переключатель в 1С добавляется через реквизит формы или объекта: элементу задаётся вид «Поле переключателя», заполняется список выбора и обязательно указывается путь к данным. Для типовых конфигураций используйте расширения, а результат проверяйте сохранением и повторным открытием формы.
Частые вопросы
Чем переключатель отличается от флажка в 1С?
Флажок хранит независимое булево значение (истина/ложь) и не связан с другими флажками. Переключатель привязан к одному реквизиту, и выбор одного варианта автоматически отменяет остальные. Для нескольких независимых опций используйте флажки, для выбора одного варианта из списка — переключатель.
Можно ли сделать переключатель без конфигуратора?
Нет, добавление нового элемента управляемой формы возможно только в конфигураторе или через расширение. В режиме предприятия пользователь может лишь изменить видимость и порядок существующих элементов через «Изменить форму», но не добавить переключатель.
Почему переключатель показывается без отмеченного варианта?
Значение связанного реквизита не совпадает ни с одним значением из списка выбора — например, реквизит пустой или имеет другой тип данных. Задайте значение по умолчанию при создании формы и проверьте соответствие типов.
Как сделать варианты переключателя вертикально?
Размещение зависит от группы-родителя и ширины элемента. Поместите поле в группу с вертикальной группировкой и при необходимости ограничьте ширину, чтобы варианты выстроились в столбец.
Можно ли использовать перечисление как источник значений?
Да, это рекомендуемый вариант. Создайте перечисление с нужными значениями, установите его тип реквизиту и добавьте в список выбора ссылки на значения перечисления. Код, проверяющий выбор, станет читаемым и устойчивым к переименованию представлений.
Сохранится ли выбор переключателя после закрытия формы?
Только если переключатель связан с реквизитом объекта, константой или другим хранилищем, а объект записан. Реквизит формы существует лишь пока форма открыта — после закрытия его значение теряется.