При разработке внешних отчетов и обработок в платформе 1С:Предприятие 7.7 разработчики часто сталкиваются с ситуацией, когда на форме диалога расположены две или более таблицы значений. Однако при разворачивании окна диалога на весь экран масштабируется только верхняя таблица, а нижняя сохраняет свой исходный размер. Проанализируем причину такого поведения платформы и рассмотрим способы решения данной проблемы.
В платформе 1С:Предприятие 7.7 встроенный механизм автоматического масштабирования элементов формы при включенном свойстве «Изменять размер» имеет архитектурное ограничение. Алгоритм платформы рассчитан на увеличение площади только одного табличного элемента на форме (например, табличной части документа, журнала или элемента ТаблицаЗначений).
Разберем детально, по какому принципу платформа выбирает, какую именно таблицу масштабировать:
ТаблицаЗначений, который идет первым в порядке обхода по клавише Tab (индекс обхода элементов формы).Если на форме расположены две таблицы значений и необходимо, чтобы при разворачивании окна увеличивалась конкретная из них (например, нижняя вместо верхней), наиболее простым решением является изменение порядка обхода элементов диалога в Конфигураторе.
Рассмотрим по шагам, как изменить порядок обхода:
ТаблицаЗначений (который должен растягиваться) находился в списке обхода раньше других таблиц.После изменения порядка обхода платформа 1С 7.7 начнет масштабировать именно ту таблицу, которая стоит первой в очереди обхода.
Если требования к интерфейсу запрещают использование внешних библиотек, но стандартного масштабирования одного элемента недостаточно, разберем альтернативные варианты построения формы:
ТаблицаЗначений. При переключении режимов работы или закладок будем программно переформировать состав колонок и содержимое этой единственной таблицы. Поскольку элемент на форме один, он будет всегда корректно растягиваться на весь экран.Если на форме необходимо одновременно видеть и пропорционально растягивать сразу две таблицы значений, штатных возможностей 1С 7.7 недостаточно. В таком случае применяются внешние компоненты, такие как FormEx или 1С++.
С помощью внешних компонент можно обрабатывать событие изменения размера окна и программно пересчитывать координаты и размеры элементов формы, создавая полноценную систему привязок (anchors).
Обратим внимание на важный нюанс: платформа 1С 7.7 сохраняет пользовательские настройки размеров и расположения окон в реестре Windows в ветке HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\.... Если после изменения порядка обхода в Конфигураторе у пользователя окно диалога продолжает отображаться по-старому, необходимо очистить сохраненные настройки конкретной формы в реестре для возврата к геометрии по умолчанию.