Почему в 1С 8.3.15 не пропадают полосы прокрутки и разъезжаются формы и как это исправить

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При переходе на платформу версии 8.3.15.1830 и другие сборки этой ветки многие разработчики столкнулись с неприятным визуальным эффектом: управляемые формы начинают «разъезжаться» вправо или вниз, а в окне появляются неисчезающие полосы прокрутки. Даже если на форме остается много свободного пространства, платформа упорно считает, что элементы не помещаются в границы окна. Рассмотрим подробно природу этой проблемы и разберем по шагам все доступные способы ее решения.

Выясним причину некорректного отображения

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

Выделим основные технические причины возникновения бага:

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

Решение 1: Настройка свойств масштабирования формы

Разберем первый и самый простой способ исправления — изменение системных свойств самой формы. В ветке 8.3.15 поведение свойства Автомасштабирование было пересмотрено.

Попробуем выполнить следующие действия в конфигураторе:

  1. Откроем проблемную форму документа или справочника.
  2. В дереве элементов выделим самый верхний уровень — саму Форму.
  3. В палитре свойств найдем раздел «Размещение» или «Интерфейс».
  4. Посмотрим на свойство Автомасштабирование. Попробуем переключить его из значения Авто в Выключено.
  5. Также обратим внимание на свойства ВариантУправленияВысотой и ВариантУправленияШириной. Установка их в значение ИспользоватьМинимальныйРазмер часто помогает форме «схлопнуться» до реальных границ элементов.

Решение 2: Оптимизация растяжения групп и элементов

Рассмотрим подробнее структуру элементов. Часто лишние полосы прокрутки возникают из-за того, что слишком много групп имеют установленное свойство «Растягивать». Проанализируем иерархию элементов:

Нам необходимо добиться того, чтобы на форме был только один «центр растяжения». Выполним следующие шаги:

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

Решение 3: Работа с режимом совместимости

Посмотрим на ситуацию со стороны системных настроек. Если форма «раздувается» только на определенных релизах 8.3.15, это явный признак несоответствия режима совместимости конфигурации и версии платформы.

Существует два пути:

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

Решение 4: Программное управление отображением

В некоторых случаях, как было замечено в обсуждении, форма выглядит корректно в модальном режиме или после ручного изменения размера окна пользователем. Это означает, что первичный расчет при открытии прошел с ошибкой. Попробуем «подтолкнуть» форму к перерисовке программно.

Разберем пример кода, который можно добавить в модуль формы:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Выполняем стандартные действия
    // ...
    
    // Принудительно обновляем отображение для пересчета геометрии
    ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры

Хотя ОбновитьОтображениеДанных() чаще используется для обновления значений, в ряде случаев этот метод инициирует пересчет связанных элементов интерфейса, что может убрать лишние полосы.

Решение 5: Учет специфики CRM-систем и динамических элементов

Если ваша конфигурация — 1С:Управление торговлей + CRM, стоит обратить внимание на динамические панели. Часто в таких решениях при открытии формы программно создаются группы для дополнительных реквизитов или навигационных ссылок.

В версии 8.3.15 механизм ИзменитьФорму() или программное создание элементов через ЭтаФорма.Элементы.Добавить() может вызвать баг, при котором размер формы устанавливается до того, как все элементы будут окончательно размещены. Выясним, нет ли в модуле формы или в общих модулях кода, который принудительно устанавливает ширину элементов в пикселях. В новой платформе лучше доверять автоматическому расчету или использовать Ширина в символах.

Решение 6: Обновление платформы (Официальное исправление)

Проанализируем техническую документацию 1С. Описанная проблема была признана разработчиками как критическая ошибка отображения (баг №10214815). Данная ошибка исправлена в последующих версиях платформы.

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

В этих версиях алгоритм «Такси» был стабилизирован, и проблема с «разлетающимися» элементами и фантомными полосами прокрутки была полностью устранена.

Итоги и рекомендации

Подводя итог, можно сказать, что появление полос прокрутки в 8.3.15 — это результат перехода платформы на новые стандарты визуализации. Для исправления ситуации мы рекомендуем сначала поиграть со свойствами Автомасштабирование и ВариантУправленияВысотой. Если это не дает результата, проверьте, не установлены ли фиксированные размеры для групп, и постарайтесь минимизировать количество растягивающихся элементов. Однако лучшим решением в долгосрочной перспективе остается обновление платформы до актуальных, исправленных релизов.

← На главную