Почему в 1С 7.7 при разворачивании окна растягивается только одна таблица значений и как это исправить?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

При разработке внешних отчетов и обработок в платформе 1С:Предприятие 7.7 разработчики часто сталкиваются с ситуацией, когда на форме диалога расположены две или более таблицы значений. Однако при разворачивании окна диалога на весь экран масштабируется только верхняя таблица, а нижняя сохраняет свой исходный размер. Проанализируем причину такого поведения платформы и рассмотрим способы решения данной проблемы.

Выясним причину поведения платформы 1С 7.7

В платформе 1С:Предприятие 7.7 встроенный механизм автоматического масштабирования элементов формы при включенном свойстве «Изменять размер» имеет архитектурное ограничение. Алгоритм платформы рассчитан на увеличение площади только одного табличного элемента на форме (например, табличной части документа, журнала или элемента ТаблицаЗначений).

Разберем детально, по какому принципу платформа выбирает, какую именно таблицу масштабировать:

  1. Платформа определяет элемент типа ТаблицаЗначений, который идет первым в порядке обхода по клавише Tab (индекс обхода элементов формы).
  2. Именно этой первой таблице выделяется вся дополнительная доступная область при увеличении размера окна.
  3. Все остальные элементы диалога, расположенные ниже или правее, платформа пытается смещать, но их размеры остаются неизменными.

Решение 1. Изменение порядка обхода элементов (штатный способ без ВК)

Если на форме расположены две таблицы значений и необходимо, чтобы при разворачивании окна увеличивалась конкретная из них (например, нижняя вместо верхней), наиболее простым решением является изменение порядка обхода элементов диалога в Конфигураторе.

Рассмотрим по шагам, как изменить порядок обхода:

  1. Откроем форму диалога внешнего отчета или обработки в Конфигураторе.
  2. Перейдем в режим настройки порядка обхода (через меню «Диалог» — «Порядок обхода» или соответствующую кнопку на панели инструментов).
  3. Установим порядок таким образом, чтобы нужный элемент ТаблицаЗначений (который должен растягиваться) находился в списке обхода раньше других таблиц.
  4. Сохраним изменения в форме.

После изменения порядка обхода платформа 1С 7.7 начнет масштабировать именно ту таблицу, которая стоит первой в очереди обхода.

Решение 2. Альтернативные способы решения без использования внешних компонент

Если требования к интерфейсу запрещают использование внешних библиотек, но стандартного масштабирования одного элемента недостаточно, разберем альтернативные варианты построения формы:

  1. Использование одной динамической таблицы значений: Поместим на форму только один элемент ТаблицаЗначений. При переключении режимов работы или закладок будем программно переформировать состав колонок и содержимое этой единственной таблицы. Поскольку элемент на форме один, он будет всегда корректно растягиваться на весь экран.
  2. Разнесение таблиц по разным слоям (закладкам): Если обе таблицы не требуется просматривать одновременно, разместим их на разных слоях диалога. На каждом слое будет находиться своя таблица, и обе будут корректно масштабироваться при переключении слоев.
  3. Отключение свойства «Изменять размер»: В свойствах формы снимем флаг «Изменять размер». В этом случае размеры окна фиксируются, и интерфейс сохраняет строго задуманный вид без визуальных искажений при разворачивании.

Решение 3. Использование внешних компонент для управления привязками

Если на форме необходимо одновременно видеть и пропорционально растягивать сразу две таблицы значений, штатных возможностей 1С 7.7 недостаточно. В таком случае применяются внешние компоненты, такие как FormEx или 1С++.

С помощью внешних компонент можно обрабатывать событие изменения размера окна и программно пересчитывать координаты и размеры элементов формы, создавая полноценную систему привязок (anchors).

Сброс сохраненных настроек геометрии окна у пользователей

Обратим внимание на важный нюанс: платформа 1С 7.7 сохраняет пользовательские настройки размеров и расположения окон в реестре Windows в ветке HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\.... Если после изменения порядка обхода в Конфигураторе у пользователя окно диалога продолжает отображаться по-старому, необходимо очистить сохраненные настройки конкретной формы в реестре для возврата к геометрии по умолчанию.

← На главную