При разработке интерфейсов в системе 1С:Предприятие (поможет панель графических закладок-переключателей для интерфейсов 1С) часто возникает ситуация, когда реквизит с типом Булево в табличной части или в таблице на форме отображается в виде скучного текста «Да» или «Нет». Это не всегда удобно для пользователя, так как визуально флажок (галочка) воспринимается гораздо быстрее и позволяет редактировать данные одним кликом. Разберем подробно, как изменить внешний вид ячейки и какие нюансы могут помешать правильному отображению графического элемента.
В классическом интерфейсе «Обычные формы» простая смена типа элемента в конфигураторе не всегда приводит к желаемому результату. Рассмотрим пошагово, что нужно сделать, чтобы превратить текст в интерактивную галочку (а для более глубокой работы пригодится выгрузка обычных форм в xml/bsl):
ТипЗначения должен быть строго установлен тип Булево. Далее найдем свойство ЭлементУправления и заменим стандартное ПолеВвода на ПолеФлажка.Данные и ДанныеФлажка.
Данные, система будет пытаться вывести текстовое представление.Данные и заполнить поле ДанныеФлажка, указав там имя вашего реквизита (например, ИспользоватьДоставку).РежимРедактирования в значение Непосредственно.Формат. Если там указаны параметры отображения логических значений (например, БЛ='Нет'; БИ='Да'), это может конфликтовать с визуальным стилем флажка. Для корректной работы графики это поле лучше оставить пустым или использовать генератор форматированной строки.В управляемом интерфейсе платформа берет на себя большую часть работы по отрисовке элементов, но и здесь есть свои тонкости. Выясним, как настроить отображение в этом случае, учитывая, что на визуальное восприятие может влиять сезонное и праздничное оформление 1С.
Рассмотрим структуру элементов формы. Нам необходимо найти нужную колонку в дереве элементов (левое верхнее окно редактора формы). Выделим элемент, связанный с булевым реквизитом, и в палитре свойств изменим значение Вид на Поле флажка.
Проанализируем ситуацию, когда галочка отображается, но ведет себя «пассивно» (не нажимается с первого раза). Для исправления этого поведения у всей таблицы (родительского элемента для нашей колонки) в свойствах нужно найти раздел Использование и установить РежимРедактирования в значение Непосредственно. Это позволит пользователю изменять состояние флажка одним нажатием мыши, не дожидаясь активации строки.
Если вы выполнили указанные выше действия, но в режиме «1С:Предприятие» по-прежнему видите текст, рассмотрим неочевидные факторы (для их поиска удобно использовать редактор форм в режиме предприятия (поможет инструментарий настройки управляемых форм и анализа метаданных)):
ТолькоПросмотр, платформа может автоматически заменять интерактивный флажок текстовым выводом для упрощения отрисовки — для настройки таких свойств без кода поможет утилита автоматической настройки видимости и доступности реквизитов формы 1С. Попробуйте снять этот флаг и проверить результат.Условное оформление в свойствах формы. Возможно, там задано правило, которое принудительно устанавливает свойство Текст для этой колонки. Условное оформление имеет приоритет над стандартными настройками элемента.В некоторых случаях нам может потребоваться настроить отображение динамически из кода. Рассмотрим пример того, как это можно сделать при создании формы на сервере (для управляемых форм):
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Получаем элемент формы (колонку таблицы)
НовыйЭлемент = Элементы.ТаблицаТоварыФлагОплачено;
// Устанавливаем вид элемента как поле флажка
НовыйЭлемент.Вид = ВидЭлементаФормы.ПолеФлажка;
// Настраиваем режим редактирования для таблицы
Элементы.ТаблицаТовары.РежимРедактирования = РежимРедактированияТаблицы.Непосредственно;
КонецПроцедуры
Для обычных форм программная настройка выглядит иначе, так как нам нужно напрямую работать со свойствами колонки табличного поля:
Процедура ПриОткрытии()
Колонка = ЭлементыФормы.ТаблицаТовары.Колонки.ФлагОплачено;
// Указываем, что данные для флажка берутся из реквизита
Колонка.Данные = ""; // Очищаем текстовые данные
Колонка.ДанныеФлажка = "ФлагОплачено";
// Устанавливаем режим непосредственного редактирования
Колонка.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КонецПроцедуры
Подводя итог, можно сказать, что основная причина появления текста вместо галочки — это либо неправильно выбранный Вид элемента, либо конфликт свойств Данные и ДанныеФлажка в старых версиях платформы. Внимательно проверяйте настройки РежимРедактирования, чтобы интерфейс вашей программы был максимально отзывчивым и удобным для конечного пользователя.