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