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