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