В процессе работы с управляемыми формами в «1С:Предприятие 8.3», особенно в таких нагруженных конфигурациях, как «Управление торговлей 11», «ERP» или «Комплексная автоматизация», пользователи часто сталкиваются с досадным поведением интерфейса. При попытке вручную расширить или сузить колонку в табличной части документа (например, в «Заказе клиента» или «Реализации товаров и услуг»), колонка неожиданно «схлопывается» до минимально возможной ширины. Любые дальнейшие попытки вернуть ей нормальный вид с помощью мыши оказываются тщетны — она либо остается узкой, либо снова сбрасывается к минимуму.
В этой статье мы подробно разберем, почему так происходит, проанализируем технические причины этого явления и рассмотрим все доступные способы решения, от простых настроек интерфейса до манипуляций в конфигураторе.
Проанализируем ситуацию. Данное поведение не является ошибкой программного кода конкретной конфигурации (УТ или ERP). Это системная ошибка движка управляемых форм платформы «1С:Предприятие 8.3». Наиболее часто проблема проявлялась в релизах веток 8.3.16 и 8.3.17.
Суть проблемы заключается в некорректном пересчете геометрических параметров элементов управления. В управляемом интерфейсе 1С расчет ширины колонок происходит динамически. Когда мы тянем границу колонки, платформа пытается пересчитать «веса» распределения пространства между всеми видимыми элементами таблицы. Если в форме включены определенные свойства растяжения или используются сложные группировки, алгоритм «зацикливается» или выдает ошибочное нулевое (минимальное) значение для ширины, из-за чего колонка и схлопывается.
Поскольку проблема носит платформенный характер, самым надежным решением будет обновление технологической платформы. Разработчики 1С признали данный баг и выпустили исправления в последующих сборках.
8.3.16.1063, 8.3.16.1148 или ранние 8.3.17, вы находитесь в зоне риска.Если обновление платформы по каким-то причинам сейчас невозможно, разберем, как можно «купировать» проблему через изменение свойств метаданных. Мы можем принудительно ограничить автоматику платформы в расчетах.
Рассмотрим пошагово, какие свойства в Конфигураторе влияют на это поведение:
РастягиватьПоГоризонтали. Если оно установлено в значение Да, платформа будет пытаться заполнить все свободное место, что часто провоцирует баг. Попробуем установить значение Нет.Номенклатура или Характеристика) проанализируем свойства ширины. Установим фиксированное значение в поле Ширина (например, 20 или 30 символов) вместо автоматического.АвтоМаксимальнаяШирина. Попробуем установить его в значение Нет и задать явную МаксимальнаяШирина. Это предотвратит бесконтрольное сжатие или расширение элемента программными алгоритмами.Как показывает практика и обсуждения на форумах, наиболее остро проблема проявляется там, где колонки объединены в группы. Особенно это касается групп с видом В ячейке (когда, например, «Номенклатура» и «Артикул» отображаются друг под другом в одной колонке) или Вертикальная.
Проанализируем структуру вашей формы:
Группировка на Горизонтальная или вовсе вынести колонки из группы.Выясним еще одну важную деталь: интерфейс 1С крайне чувствителен к настройкам DPI (масштаба экрана) в Windows. Если у пользователя установлен масштаб 125% или 150% (что часто бывает на современных мониторах с высоким разрешением), платформа может некорректно считывать координаты курсора мыши при перетаскивании границы колонки.
Попробуем выполнить следующие действия для проверки:
Когда колонка уже «схлопнулась», информация об этом сохраняется в настройках пользователя. Даже если вы исправите что-то в конфигураторе, старая «кривая» ширина может подтянуться из кэша настроек.
Разберем, как сбросить эти настройки:
Ещё — Изменить форму.Ещё — Установить стандартные настройки.Важно: Это вернет форму к первоначальному виду, но не гарантирует, что при следующей попытке изменить ширину мышью баг не повторится. Это лишь способ вернуть интерфейс в рабочее состояние после сбоя.
В некоторых случаях стабилизировать поведение колонок помогает переключение интерфейса в «Компактный» вариант. Это меняет плотность элементов и алгоритмы расчета отступов между ними.
Для этого выполним следующие действия:
Настройки — Параметры.Вариант интерфейса выберем Компактный.ОК и перезапустим программу (если потребуется).Подводя итог, можно сказать, что «схлопывание» колонок — это классический «баг отрисовки». Мы рекомендуем следующий алгоритм действий: