При работе с «обычными формами» (интерфейс, существовавший до появления управляемых форм в 1С 8.2 и 8.3) разработчики часто сталкиваются с ситуацией, когда после обновления конфигурации или ручного изменения состава реквизитов элементы формы перестают вести себя адекватно. Типичные симптомы: табличная часть не расширяется при развороте окна, кнопки «зависают» в центре экрана или накладываются друг на друга. Рассмотрим подробно, как диагностировать и исправить эти проблемы.
Прежде чем приступать к ручной перенастройке каждого элемента, воспользуемся встроенным инструментом платформы. Разберем, как выполнить проверку формы. Для этого в конфигураторе необходимо открыть нужную форму и перейти в меню: Главное меню — Форма — Проверить (или нажать сочетание клавиш Ctrl + R).
В открывшемся режиме предпросмотра попробуем изменить размер окна или развернуть его на весь экран. В этот момент система может подсветить определенные элементы красными линиями. Проанализируем, что это означает:
А привязан к элементу Б, а элемент Б в свою очередь привязан к элементу А.Если при развороте форма «замирает» и не растягивается, именно те элементы, которые на долю секунды загораются красным, являются виновниками проблемы.
Для того чтобы форма выглядела профессионально и корректно реагировала на изменение размеров, необходимо устанавливать привязки осмысленно. Рассмотрим стандартную схему для документа, где есть «шапка», табличная часть и «подвал» с итогами.
Выясним основные правила для табличной части:
Для командной панели, которая должна всегда находиться внизу, правила иные:
Установим для неё привязку Верх и Низ к нижней границе формы. В этом случае панель не будет растягиваться по вертикали, а будет просто «уходить» вниз вслед за краем окна.
Проанализируем ситуацию, которая часто становится причиной «необъяснимого» поведения формы. Иногда под основной командной панелью или за границами видимости формы остаются вспомогательные элементы (надписи, скрытые панели, разделители).
Рассмотрим пример: под табличной частью находится панель с итоговой суммой. Если при обновлении конфигурации под эту панель «затесался» другой элемент (даже если он пустой или невидимый), он может блокировать движение всех элементов выше него. Выясним причину через Список элементов формы (кнопка в нижней части окна свойств или через контекстное меню). Проверим координаты всех объектов. Если обнаружится элемент с координатами, выходящими за пределы высоты формы, его нужно либо удалить, либо вернуть в границы видимости и настроить его привязки.
В некоторых сложных случаях визуальный редактор не позволяет добиться идеального результата. Рассмотрим, как можно программно управлять геометрией в процедуре ПриОткрытии. Для этого используется метод УстановитьПривязку.
Посмотрим на пример кода:
Процедура ПриОткрытии()
// Привязываем правую границу табличной части к правой границе формы
ЭлементыФормы.Товары.УстановитьПривязку(ГраницаЭлемента.Право, ЭлементыФормы.ПанельОсновная, ГраницаЭлемента.Право);
// Привязываем нижнюю границу таблицы к нижней границе формы
ЭлементыФормы.Товары.УстановитьПривязку(ГраницаЭлемента.Низ, Форма, ГраницаЭлемента.Низ);
КонецПроцедуры
Этот метод гарантирует, что настройки будут применены именно так, как задумал разработчик, независимо от того, что «наворотил» визуальный редактор после объединения конфигураций.
Проверим еще один важный параметр в свойствах самой формы — флаг «Автомасштабирование». Если этот флаг включен, система 1С пытается самостоятельно адаптировать форму под текущее разрешение экрана и системный шрифт пользователя.
Однако при ручной и сложной настройке привязок Автомасштабирование может конфликтовать с вашими настройками. Если вы уверены, что все привязки расставлены логически верно, но форма все равно «едет», попробуйте отключить это свойство. В этом случае система будет жестко следовать заданным координатам и правилам привязки.
Если форма сильно повреждена и ручная правка занимает слишком много времени, разберем альтернативный путь. Если у вас есть резервная копия или типовая конфигурация, можно воспользоваться механизмом сравнения:
После этого останется только аккуратно перенести свои доработки, внимательно следя за тем, чтобы новые элементы не нарушали существующую логику растягивания.
Важно помнить, что если элементы расположены внутри объекта Панель, то их привязки настраиваются относительно границ этой панели, а не всей формы.
Рассмотрим ситуацию: вы настроили таблицу внутри панели идеально, но сама Панель не имеет привязки к правой границе формы. В итоге при растягивании окна панель останется на месте, и таблица внутри неё тоже не сдвинется ни на пиксель. Всегда проверяйте «родительский» элемент (контейнер). Если вы хотите, чтобы содержимое панели росло вместе с формой, сначала убедитесь, что сама панель привязана к Форма.Право и Форма.Низ.