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

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

Подготовка реквизитов формы для переключателя

Перед тем как вывести элемент управления на экран, необходимо подготовить «почву» для хранения данных. Переключатель в 1С 8.3 всегда привязан к конкретному реквизиту формы. Чаще всего для этих целей используется примитивный тип данных — Строка или Число. Если вы планируете хранить текстовые коды состояний, создайте реквизит типа Строка с фиксированной длиной.

Длина строки должна быть достаточной для хранения самого длинного значения из возможных вариантов. Например, если варианты выбора имеют коды «Активен», «Заблокирован» и «На проверке», то минимальная длина строки составит 12 символов. Использование типа Число также допустимо, особенно если варианты кодируются цифрами 1, 2, 3, что иногда экономит место в базе данных при последующей записи в регистры.

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

⚠️ Внимание: Тип данных реквизита формы и тип значения, которое вы планируете присваивать переключателю, должны строго совпадать. Попытка записать строку в числовой реквизит вызовет ошибку выполнения.

Размещение элемента управления на макете формы

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

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

Следующий критический шаг — настройка вариантов выбора. В свойствах элемента найдите коллекцию Варианты. Именно здесь задаются те самые кнопки, между которыми пользователь будет выбирать. Каждый вариант представляет собой пару: значение (которое запишется в реквизит) и представление (текст, видимый пользователю).

💡

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

Настройка свойств и вариантов выбора

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

Рассмотрим пример настройки для выбора статуса заказа. Вам потребуется добавить три варианта. Первый: Значение «Новый», Представление «Новый заказ». Второй: Значение «В работе», Представление «Выполняется». Третий: Значение «Готов», Представление «Завершен». Платформа автоматически отобразит эти пункты как радиокнопки.

Также стоит обратить внимание на свойство Вид переключателя. Оно позволяет выбрать ориентацию элементов: вертикальную или горизонтальную. Вертикальное расположение предпочтительнее, если тексты вариантов длинные или их много. Горизонтальное экономит место по высоте, но требует достаточной ширины формы.

Свойство Тип значения Описание влияния на форму
Данные Поле формы Определяет переменную для хранения выбранного значения
Варианты Список значений Формирует набор доступных опций для выбора пользователем
Вид Перечисление Задает направление расположения кнопок (вертикально/горизонтально)
Только просмотр Булево Запрещает изменение значения пользователем, оставляя только отображение
📊 Какой тип данных вы чаще используете для переключателей?
Строка (Текст)
Число (Код)
Перечисление
Булево (Да/Нет)

Группировка переключателей для независимой работы

Один из самых частых вопросов новичков касается ситуации, когда на форме требуется несколько независимых групп переключателей. По умолчанию все переключатели, находящиеся в одной логической области видимости (например, на одной странице без разделителей), могут вести себя как одна группа. То есть выбор в одной группе сбрасывает выбор в другой.

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

Платформа 1С 8.3 трактует переключатели, лежащие в разных родительских контейнерах, как раздельные наборы. Это позволяет реализовать сложную логику интерфейса, где пользователь выбирает тип оплаты в одном блоке и способ доставки в другом, не опасаясь сброса предыдущих настроек.

⚠️ Внимание: Если переключатели ведут себя некорректно и сбрасывают друг друга, проверьте иерархию макета формы. Убедитесь, что независимые группы разделены элементами «Группа» или «Страница».

Техническая деталь реализации группировки

Механизм группировки переключателей в 1С основан на области видимости имени группы в HTML-рендерере клиента. Элементы внутри одного контейнера получают общий атрибут name, что заставляет браузер обрабатывать их как единую радиогруппу.

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

Статического размещения часто недостаточно. Требуется реакция системы на изменение выбора пользователем. Для этого используется событие ПриИзменении у реквизита формы, к которому привязан переключатель. В модуле формы создается процедура-обработчик.

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

&НаКлиенте

Процедура СтатусЗаказаПриИзменении(Элемент)

Если СтатусЗаказа = "В работе" Тогда

Элементы.Комментарий.Доступность = Истина;

Сообщить("Режим редактирования активирован");

Иначе

Элементы.Комментарий.Доступность = Ложь;

Элементы.Комментарий.Значение = "";

КонецЕсли;

КонецПроцедуры

Также возможно программное изменение значения переключателя из других частей кода. Достаточно просто присвоить новое значение реквизиту формы: СтатусЗаказа = "Готов";. Интерфейс автоматически обновится, и «галочка» переместится на соответствующий вариант. Это удобно при инициализации формы данными из базы.

☑️ Проверка работоспособности переключателя

Выполнено: 0 / 5

Типичные ошибки и способы их устранения

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

Вторая распространенная проблема — отсутствие права доступа. Если у роли пользователя нет прав на изменение данного реквизита объекта метаданных, поле будет заблокировано. Проверьте настройки прав доступа (РПИ) для соответствующего объекта конфигурации.

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

⚠️ Внимание: При изменении структуры вариантов выбора (добавление или удаление пунктов) в работающей базе данных убедитесь, что старые записанные значения остаются валидными. Иначе при открытии старых документов могут возникнуть ошибки отображения.

💡

Главное правило отладки: всегда сверяйте тип данных реквизита формы и тип значений в коллекции вариантов. 90% проблем с неработающим переключателем кроются именно здесь.

Часто задаваемые вопросы (FAQ)

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

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

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

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

Почему переключатель сбрасывается при перезаписи формы?

Это происходит, если значение в реквизите объекта не соответствует ни одному из вариантов в коллекции. При чтении данных система пытается найти соответствие. Если совпадения нет (например, в базе записано "СтарыйСтатус", а в форме только "Новый" и "Готов"), значение игнорируется и поле остается пустым.

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

Да, это допустимо. Создайте реквизит типа Булево и добавьте два варианта: Значение Истина (Представление «Да») и Значение Ложь (Представление «Нет»). Однако для булевых значений чаще и удобнее использовать стандартный флажок (Checkbox).

Влияет ли порядок вариантов в списке на-tab навигацию?

Да, порядок следования элементов в коллекции Варианты определяет последовательность переключения фокуса клавишей Tab или стрелками клавиатуры. Первый элемент в списке будет первым в очереди обхода. Это важно учитывать для обеспечения эргономики работы оператора.