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