Как в таблице 1С вместо текста Да/Нет отобразить флажок (галочку)?

Программист 1С v8.3 (Обычные формы)
← На главную

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

Решение для обычных форм (1С 8.2 и режим совместимости)

В классическом интерфейсе «Обычные формы» простая смена типа элемента в конфигураторе не всегда приводит к желаемому результату. Рассмотрим пошагово, что нужно сделать, чтобы превратить текст в интерактивную галочку (а для более глубокой работы пригодится выгрузка обычных форм в xml/bsl):

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

Решение для управляемых форм (современный интерфейс 8.3)

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

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

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

Почему все равно пишет «Да» и «Нет»? Выясняем причины

Если вы выполнили указанные выше действия, но в режиме «1С:Предприятие» по-прежнему видите текст, рассмотрим неочевидные факторы (для их поиска удобно использовать редактор форм в режиме предприятия (поможет инструментарий настройки управляемых форм и анализа метаданных)):

  1. Кэширование и сохранение: Как было замечено в обсуждении, иногда конфигуратор не сразу «пробрасывает» изменения в интерфейс. Обязательно сохраните обработку или конфигурацию (Ctrl+S), закройте окно предприятия и откройте форму заново.
  2. Свойство «Только просмотр»: Посмотрим на настройки прав и доступности. Если для колонки или всей таблицы установлено свойство ТолькоПросмотр, платформа может автоматически заменять интерактивный флажок текстовым выводом для упрощения отрисовки — для настройки таких свойств без кода поможет утилита автоматической настройки видимости и доступности реквизитов формы 1С. Попробуйте снять этот флаг и проверить результат.
  3. Условное оформление: Проанализируем вкладку Условное оформление в свойствах формы. Возможно, там задано правило, которое принудительно устанавливает свойство Текст для этой колонки. Условное оформление имеет приоритет над стандартными настройками элемента.
  4. Ширина колонки: Иногда графический флажок просто не помещается в слишком узкую колонку, и система «откатывается» к текстовому представлению. Попробуйте немного увеличить ширину.

Программное управление отображением

В некоторых случаях нам может потребоваться настроить отображение динамически из кода. Рассмотрим пример того, как это можно сделать при создании формы на сервере (для управляемых форм):


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Получаем элемент формы (колонку таблицы)
    НовыйЭлемент = Элементы.ТаблицаТоварыФлагОплачено;
    
    // Устанавливаем вид элемента как поле флажка
    НовыйЭлемент.Вид = ВидЭлементаФормы.ПолеФлажка;
    
    // Настраиваем режим редактирования для таблицы
    Элементы.ТаблицаТовары.РежимРедактирования = РежимРедактированияТаблицы.Непосредственно;
    
КонецПроцедуры

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


Процедура ПриОткрытии()
    
    Колонка = ЭлементыФормы.ТаблицаТовары.Колонки.ФлагОплачено;
    
    // Указываем, что данные для флажка берутся из реквизита
    Колонка.Данные = ""; // Очищаем текстовые данные
    Колонка.ДанныеФлажка = "ФлагОплачено";
    
    // Устанавливаем режим непосредственного редактирования
    Колонка.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
    
КонецПроцедуры

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

← На главную