Как уменьшить ширину колонок с флажками в управляемых формах 1С?

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

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

Причины платформенного ограничения ширины колонок

Выясним, почему стандартная установка параметров АвтоШирина и Ширина не всегда позволяет сжать колонку до желаемого размера:

  1. Минимальные системные отступы: В управляемых формах расчет ширины элементов выполняется платформой автоматически. Даже при установке свойств АвтоШирина = Ложь и Ширина = 1 платформа закладывает базовые внутренние отступы (padding), границы элемента и место под системные индикаторы (например, значок сортировки в шапке колонки).
  2. Заголовок и его резервирование: Наличие текста в шапке колонки заставляет платформу рассчитывать минимальный размер ячейки с учетом названия и иконки состояния.
  3. Рекомендательный характер свойства Ширина: В управляемом интерфейсе значение свойства Ширина задает желаемый, а не жесткий размер. Если внутренний алгоритм компоновки считает, что элементу нужно больше места, колонка расширяется до минимально допустимого платформенного порога.
  4. Особенности сохранения настроек: Изменение ширины мышью в режиме «1С:Предприятие» сохраняется в пользовательском хранилище настроек. Однако если структура формы или динамического списка меняется программой при открытии (в событиях ПриСозданииНаСервере или ПриОткрытии), ручные настройки ширины пользователя могут сбрасываться к значениям по умолчанию.

Способ 1. Замена текста заголовков картинками

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

Для реализации этого решения выполним следующие шаги:

  1. Откроем свойства нужной колонки таблицы в конфигураторе.
  2. Очистим значение в свойстве Заголовок (чтобы платформа не резервировала место под текстовые символы).
  3. В свойстве КартинкаШапки укажем подходящую значковую картинку 16х16 из стандартной библиотеки или пользовательских макетов.
  4. Установим свойство АвтоШирина в значение Ложь, а свойство Ширина зададим равным 1.

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

Способ 2. Использование символов Unicode вместо стандартного флажка

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

  1. Установим вид поля как ПолеВвода или ПолеНадписи с включенным свойством ТолькоПросмотр.
  2. Зададим свойство ПоложениеЗаголовка в значение Нет.
  3. В качестве отображаемого значения выведем текстовый символ Unicode, имитирующий флажок (например, ☑ для значению Истина и ☐ для Ложь).
  4. Для интерактивного изменения значения обработаем событие Выбор или НачалоВыбора ячейки таблицы:

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    Если Поле.Имя = "МояКолонкаФлаг" Тогда
        СтандартнаяОбработка = Ложь;
        // Изменяем логическое значение и обновляем вывод символа
        ИзменитьЗначениеФлажкаНаСервере(ВыбраннаяСтрока);
    КонецЕсли;
КонецПроцедуры

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

Способ 3. Отключение авторастягивания и настройки компоновки

Разберем дополнительные настройки элементов формы, которые предотвращают случайное расширение колонок при изменении размеров окна:

  1. Растягивание по горизонтали: Установим у элемента колонки свойство РастягиваниеПоГоризонтали в значение Ложь. Это запретит платформе автоматически растягивать ячейку за счет свободного места формы.
  2. Положение заголовка: Если заголовок колонки вовсе не требуется, укажем ПоложениеЗаголовка = Нет (а не просто пустую строку). Это полностью исключает выделение области под заголовок платформой.
  3. Группировка колонок: При наличии множества однотипных флагов объединим их в Группу колонок с горизонтальной ориентацией. Внутри группы элементы располагаются более плотно.

Способ 4. Использование ПоляКартинки и Условного оформления

Если таблица построена на базе динамического списка, эффективным решением будет вывод состояния через условное оформление или поле картинки:

  1. Создадим элемент с видом ПолеКартинки.
  2. В свойстве КартинкаЗначений укажем библиотеку картинок с иконками установленного и снятого флажка.
  3. Настроим АвтоШирина = Ложь и Ширина = 1.

Этот способ устраняет накладные расходы платформы на отрисовку полноценного интерактивного элемента управления в каждой строке и делает ширину колонки минимально возможной.

← На главную