Как программно настроить отображение флажка в таблице на управляемой форме 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При программной настройке колонок таблицы формы разработчики нередко сталкиваются с ошибками типизации или некорректным отображением элементов управления. Например, при попытке вызвать метод УстановитьЭлементУправления или привязать тип Флажок платформа генерирует исключение, либо созданное поле вместо привычного флажка упорно отображается как поле ввода с текстовыми значениями «Истина» и «Ложь». Разберем подробно, почему это происходит и как правильно настроить элемент управления флажка в управляемом интерфейсе 1С:Предприятия 8.3.

Причина первой ошибки: различия между обычными и управляемыми формами

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

Элементы.ТЗ.ПодчиненныеЭлементы[0].УстановитьЭлементУправления(Тип("Флажок"));

В управляемых формах данный подход принципиально не работает по следующим причинам:

  1. Метод УстановитьЭлементУправления() и свойства вроде ДанныеФлажка принадлежат объекту ТабличноеПоле из обычных форм (толстый клиент). В синтакс-помощнике управляемого приложения таких методов у элементов формы нет.
  2. В управляемом интерфейсе тип элемента формы всегда является универсальным — ПолеФормы. Его поведение и внешний вид регулируются не типом объекта, а свойством Вид, принимающим значения системного перечисления ВидПоляФормы.
  3. Типа данных с именем «Флажок» в платформе 1С не существует. Для хранения признака включения/выключения используется примитивный тип Булево (или Число).

Причина второй ошибки: сброс вида поля при привязке данных

Выясним причину ситуации, когда разработчик устанавливает ВидПоляФормы.ПолеФлажка, но в интерфейсе все равно отображается поле ввода. Посмотрим на типовой фрагмент кода с ошибкой порядка выполнения:


НовыйЭлемент = Элементы.Добавить("ТЗ_Отметка", Тип("ПолеФормы"), Элементы.ТЗ);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
НовыйЭлемент.ПутьКДанным = "ТЗ.Отметка";

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

Главное правило: свойство Вид необходимо устанавливать строго после заполнения свойства ПутьКДанным.

Пошаговый алгоритм создания колонки-флажка на сервере

Разберем по шагам правильную последовательность действий при создании колонки таблицы формы в серверном контексте (например, в обработчике ПриСозданииНаСервере).

  1. Проверяем типизацию реквизита данных: Колонка таблицы формы (или реквизита типа ТаблицаЗначений) должна иметь явный тип Булево. Если колонка создается динамически через ИзменитьРеквизиты(), обязательно передаем корректное ОписаниеТипов.
  2. Создаем элемент формы: Вызываем метод Элементы.Добавить() с типом ПолеФормы и указываем в качестве родителя нашу таблицу.
  3. Устанавливаем путь к данным: Заполняем свойство ПутьКДанным строковым путем к колонке реквизита.
  4. Назначаем вид элемента: Указываем ВидПоляФормы.ПолеФлажка.
  5. Настраиваем параметры взаимодействия: Для удобства пользователя определяем режим редактирования и внешний вид переключателя.

Пример программного кода

Рассмотрим законченный пример добавления и настройки колонки-флажка для таблицы формы:


&НаСервере
Процедура НастроитьКолонкуФлажкаНаСервере()

    ИмяКолонки = "Выбран";
    ИмяЭлемента = "ТЗ_" + ИмяКолонки;
    
    // 1. Добавляем элемент формы в подчинение таблицы
    КолонкаФлажок = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), Элементы.ТЗ);
    
    // 2. Сначала привязываем данные
    КолонкаФлажок.ПутьКДанным = "ТЗ." + ИмяКолонки;
    
    // 3. Только после этого определяем вид поля
    КолонкаФлажок.Вид = ВидПоляФормы.ПолеФлажка;
    
    // 4. Дополнительные настройки для удобства работы
    КолонкаФлажок.Заголовок = "Выбрать";
    КолонкаФлажок.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
    КолонкаФлажок.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;

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

Полезные свойства поля флажка

Рассмотрим подробнее дополнительные свойства, которые делают работу с флажком в таблице управляемой формы удобной:

Свойство РежимРедактирования: По умолчанию в таблицах 1С ячейка переходит в режим редактирования по двойному щелчку мыши. Чтобы флажок переключался мгновенно по первому клику, задаем свойство РежимРедактированияКолонки.Непосредственно.

Свойство ВидФлажка: Позволяет настроить визуальный стиль отображения элемента управления. Используя значения системного перечисления ВидФлажка, можно переключить отображение между классическим флажком (ВидФлажка.Флажок) и современным тумблером (ВидФлажка.Выключатель).

Свойство ТриСостояния: Если колонка таблицы может содержать неопределенное состояние (например, когда реквизит содержит значения Истина, Ложь и Неопределено или тип Число), установка свойства ТриСостояния = Истина позволит флажку принимать нейтральное промежуточное положение.

← На главную