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

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

При разработке интерфейсов на управляемых формах в 1С:Предприятие 8 часто возникает необходимость разместить графический элемент «Поле флажка» в ячейке табличной части строго по центру колонки. Однако при установке свойства элемента ГоризонтальноеПоложение = Центр разработчики сталкиваются с тем, что квадратик флажка все равно остается прижатым к левому краю ячейки.

Проанализируем причины такого поведения платформы и разберем все практические способы решения этой задачи.

Выясним причину ограничения платформы

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

Способ 1. Оптимизация ширины колонки и наименования

Самый простой вариант, не требующий написания дополнительных обработчиков событий, заключается в подгонке размеров самой колонки таблицы.

Разберем алгоритм действий по шагам:

  1. Перейдем в редактор управляемой формы и выберем колонку таблицы с реквизитом типа Булево.
  2. Сократим заголовок колонки (свойство Заголовок), сделав его максимально лаконичным, или заменим его короткой аббревиатурой.
  3. Установим минимальную ширину колонки (свойство Ширина) так, чтобы флажок визуально оказался по центру относительно заголовка.

Способ 2. Использование элемента «Поле картинки»

Если ширина колонки должна оставаться большой из-за длинного заголовка, наиболее эстетичным решением является замена стандартного поля флажка на графическое поле. Для элемента Поле картинки свойство ГоризонтальноеПоложение = Центр работает корректно и действительно смещает изображение в центр ячейки.

Рассмотрим реализацию данного метода по шагам:

  1. В свойствах элемента колонки таблицы изменим вид элемента на «Поле картинки».
  2. В свойство элемента «Картинка значений» установим двухиконковую коллекцию картинок. В этой коллекциях первый индекс (0) соответствует значению Ложь (снятый флажок), а второй индекс (1) — значению Истина (установленный флажок).
  3. Установим у элемента свойство ГоризонтальноеПоложение в значение Центр.
  4. Для обеспечения интерактивности добавим обработчик события Выбор для таблицы формы, чтобы инвертировать значение при клике пользователя по ячейке.

Посмотрим на пример кода в обработчике события таблицы:


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

Способ 3. Изменение вида флажка на «Тумблер» или «Выключатель»

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

Проанализируем этот вариант:

  1. Откроем свойства элемента формы, связанного с реквизитом типа Булево.
  2. Найдем свойство «Вид флажка».
  3. Изменим значение с Флажок на Тумблер или Выключатель (доступно начиная с версии платформы 8.3.15).

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

← На главную