При переходе на новые релизы платформы 1С:Предприятие (особенно это коснулось ветки 8.3.15.1747 и соседних с ней сборок) разработчики часто сталкиваются с неприятным визуальным дефектом: управляемая форма внезапно растягивается по горизонтали, выходя за пределы экрана и вызывая появление горизонтальной полосы прокрутки. Характерно, что эта проблема чаще всего проявляется не в современном интерфейсе «Такси», а в классическом интерфейсе «В закладках». Рассмотрим причины этого поведения и пошагово разберем методы решения данной проблемы.
Проанализируем ситуацию с точки зрения механизмов платформы. Основная причина кроется в изменении алгоритмов рендеринга (отрисовки) элементов. Начиная с версии 8.3.15, ядро платформы было значительно переработано для оптимизации интерфейса «Такси». Однако обратная совместимость со старыми режимами отображения («В закладках», «Формы в отдельных окнах») пострадала.
Основные факторы, вызывающие «распорку» формы:
АвтомаксимальнаяШирина.Группировка.Горизонтальная приводит к тому, что элементы внутри пытаются занять «идеальную» ширину, не учитывая границы окна.Прежде чем приступать к сложному программированию, разберем самые простые методы, которые помогают в большинстве случаев «зависших» параметров верстки. Рассмотрим рекомендации опытных разработчиков: сброс и пересоздание.
Иногда платформа кэширует старые размеры элементов, которые после обновления интерпретируются неверно. Попробуем выполнить следующие действия:
Проанализируем поведение табличных частей на форме. Именно они чаще всего являются виновниками горизонтального скролла. В интерфейсе «в закладках» расчет ширины таблицы происходит по сумме минимальных ширин ее колонок. Посмотрим, как это настроить правильно.
Для каждой колонки в таблице проверьте следующие свойства:
Ложь для всех колонок, кроме одной — самой важной (например, «Наименование» или «Содержание»).Ложь и ограничьте максимальную ширину разумным пределом (например, 40-50).Пример программной настройки колонок при открытии формы, если их слишком много для ручной правки:
&НаСервере
Процедура НастроитьШиринуКолонокНаСервере()
Для Каждого Колонка Из Элементы.Список.ПодчиненныеЭлементы Цикл
Колонка.РастягиватьПоГоризонтали = Ложь;
Колонка.Ширина = 15;
КонецЦикла;
КонецПроцедуры
Если манипуляции с колонками не помогли, разберем метод создания «жесткого каркаса». Посмотрим на структуру элементов: если у вас на форме есть горизонтальные группы, они могут работать как распорки.
Попробуем изменить структуру групп:
Обычная группа.Группировка — Вертикальная.Ширина (например, 80 или 100), вместо автоматического значения.Выясним причину влияния заголовков. В интерфейсе «в закладках» длинные заголовки групп не умеют переноситься или сокращаться так, как это делает «Такси». Проверьте все элементы Группа и Декорация — если их текст слишком длинный, это может быть причиной растягивания всей формы.
В некоторых случаях платформа игнорирует настройки конфигуратора. Тогда нам на помощь приходит программная установка параметров. Рассмотрим, как можно принудительно задать размеры при инициализации интерфейса.
Используйте следующий подход в модуле формы:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Устанавливаем принудительный размер окна, если платформа "раздувает" его
ЭтаФорма.АвтоШирина = Ложь;
ЭтаФорма.Ширина = 80;
КонецПроцедуры
Важный момент: Обратите внимание, что свойство Ширина в управляемых формах измеряется не в пикселях, а в средних символах шрифта. Установка значения 0 означает автоматическое определение, которое в бажных релизах платформы (как 8.3.15.1747) работает некорректно.
Проанализировав опыт сообщества 1С, можно сделать вывод, что данная проблема является признанным багом. В последующих патчах ветки 8.3.15 (например, начиная с 8.3.15.1830) и в ветке 8.3.16 ошибки расчета геометрии в старых интерфейсах были частично исправлены.
Если вышеперечисленные методы (сброс настроек, фиксация ширины колонок и групп) не дают стабильного результата, настоятельно рекомендуем рассмотреть возможность обновления на более стабильный релиз платформы или перевод конфигурации на интерфейс «Такси», где подобные проблемы с расчетом ширины практически не встречаются.
Подведем итог: проблема избыточной ширины в 1С 8.3.15 — это результат конфликта механизмов «Такси» со старым интерфейсом «В закладках». Решить её можно либо жестким ограничением ширины элементов и групп, либо полным пересозданием формы без использования копирования проблемных объектов.