При разработке интерфейсов на управляемых формах разработчики часто сталкиваются с ситуацией, когда на форму списка или динамический список выводится большое количество колонок с булевыми значениями (флажками). Даже если заголовок колонки состоит всего из одного или двух символов, платформа 1С визуально ограничивает минимальную ширину элемента, зарезервировав место примерно под 4–5 символов. В результате таблица занимает слишком много пространства по горизонтали. Проанализируем причины такого поведения платформы и разберем практические способы решения этой задачи.
Выясним, почему стандартная установка параметров АвтоШирина и Ширина не всегда позволяет сжать колонку до желаемого размера:
АвтоШирина = Ложь и Ширина = 1 платформа закладывает базовые внутренние отступы (padding), границы элемента и место под системные индикаторы (например, значок сортировки в шапке колонки).Ширина: В управляемом интерфейсе значение свойства Ширина задает желаемый, а не жесткий размер. Если внутренний алгоритм компоновки считает, что элементу нужно больше места, колонка расширяется до минимально допустимого платформенного порога.ПриСозданииНаСервере или ПриОткрытии), ручные настройки ширины пользователя могут сбрасываться к значениям по умолчанию.Рассмотрим наиболее эффективный и простой подход, который позволяет визуально уменьшить ширину колонки почти в два раза. Вместо текстового заголовка шапки в свойство колонки устанавливается пиктограмма размером 16х16 пикселей.
Для реализации этого решения выполним следующие шаги:
Заголовок (чтобы платформа не резервировала место под текстовые символы).КартинкаШапки укажем подходящую значковую картинку 16х16 из стандартной библиотеки или пользовательских макетов.АвтоШирина в значение Ложь, а свойство Ширина зададим равным 1.Благодаря отсутствию текста платформа снимает необходимость резервирования пространства под название и значок сортировки, уменьшая общую ширину колонки до размера самой иконки и флажка.
Проанализируем альтернативный вариант, если требуется еще сильнее ужать элемент или сделать отображение максимально компактным. В этом случае поле переводится из типа «Поле флажка» в обычную текстовую надпись.
ПолеВвода или ПолеНадписи с включенным свойством ТолькоПросмотр.ПоложениеЗаголовка в значение Нет.☑ для значению Истина и ☐ для Ложь).Выбор или НачалоВыбора ячейки таблицы:
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле.Имя = "МояКолонкаФлаг" Тогда
СтандартнаяОбработка = Ложь;
// Изменяем логическое значение и обновляем вывод символа
ИзменитьЗначениеФлажкаНаСервере(ВыбраннаяСтрока);
КонецЕсли;
КонецПроцедуры
Текстовые поля платформа 1С позволяет ужимать значительно сильнее, чем стандартные элементы управления флажками.
Разберем дополнительные настройки элементов формы, которые предотвращают случайное расширение колонок при изменении размеров окна:
РастягиваниеПоГоризонтали в значение Ложь. Это запретит платформе автоматически растягивать ячейку за счет свободного места формы.ПоложениеЗаголовка = Нет (а не просто пустую строку). Это полностью исключает выделение области под заголовок платформой.Группу колонок с горизонтальной ориентацией. Внутри группы элементы располагаются более плотно.Если таблица построена на базе динамического списка, эффективным решением будет вывод состояния через условное оформление или поле картинки:
ПолеКартинки.КартинкаЗначений укажем библиотеку картинок с иконками установленного и снятого флажка.АвтоШирина = Ложь и Ширина = 1.Этот способ устраняет накладные расходы платформы на отрисовку полноценного интерактивного элемента управления в каждой строке и делает ширину колонки минимально возможной.