Почему при изменении ширины колонки в табличной части она автоматически сжимается и как это исправить?

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

В процессе работы с управляемыми формами в «1С:Предприятие 8.3», особенно в таких нагруженных конфигурациях, как «Управление торговлей 11», «ERP» или «Комплексная автоматизация», пользователи часто сталкиваются с досадным поведением интерфейса. При попытке вручную расширить или сузить колонку в табличной части документа (например, в «Заказе клиента» или «Реализации товаров и услуг»), колонка неожиданно «схлопывается» до минимально возможной ширины. Любые дальнейшие попытки вернуть ей нормальный вид с помощью мыши оказываются тщетны — она либо остается узкой, либо снова сбрасывается к минимуму.

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

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

Проанализируем ситуацию. Данное поведение не является ошибкой программного кода конкретной конфигурации (УТ или ERP). Это системная ошибка движка управляемых форм платформы «1С:Предприятие 8.3». Наиболее часто проблема проявлялась в релизах веток 8.3.16 и 8.3.17.

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

Способ 1. Обновление платформы (рекомендуемое решение)

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

  1. Проверим текущую версию платформы. Если вы используете релизы типа 8.3.16.1063, 8.3.16.1148 или ранние 8.3.17, вы находитесь в зоне риска.
  2. Рассмотрим возможность перехода на более стабильные версии. Рекомендуется использовать платформу версии 8.3.18.х и выше. В этих версиях алгоритм отрисовки табличных частей был существенно переработан, что решило проблему «прыгающих» колонок.

Способ 2. Изменение свойств колонок в Конфигураторе

Если обновление платформы по каким-то причинам сейчас невозможно, разберем, как можно «купировать» проблему через изменение свойств метаданных. Мы можем принудительно ограничить автоматику платформы в расчетах.

Рассмотрим пошагово, какие свойства в Конфигураторе влияют на это поведение:

  1. Откроем форму документа, в которой наблюдается проблема.
  2. Выделим таблицу (табличную часть) и перейдем в её свойства.
  3. Найдем свойство РастягиватьПоГоризонтали. Если оно установлено в значение Да, платформа будет пытаться заполнить все свободное место, что часто провоцирует баг. Попробуем установить значение Нет.
  4. Для конкретных «проблемных» колонок (например, Номенклатура или Характеристика) проанализируем свойства ширины. Установим фиксированное значение в поле Ширина (например, 20 или 30 символов) вместо автоматического.
  5. Проверим свойство АвтоМаксимальнаяШирина. Попробуем установить его в значение Нет и задать явную МаксимальнаяШирина. Это предотвратит бесконтрольное сжатие или расширение элемента программными алгоритмами.

Способ 3. Работа с группами колонок

Как показывает практика и обсуждения на форумах, наиболее остро проблема проявляется там, где колонки объединены в группы. Особенно это касается групп с видом В ячейке (когда, например, «Номенклатура» и «Артикул» отображаются друг под другом в одной колонке) или Вертикальная.

Проанализируем структуру вашей формы:

Способ 4. Влияние масштабирования ОС Windows

Выясним еще одну важную деталь: интерфейс 1С крайне чувствителен к настройкам DPI (масштаба экрана) в Windows. Если у пользователя установлен масштаб 125% или 150% (что часто бывает на современных мониторах с высоким разрешением), платформа может некорректно считывать координаты курсора мыши при перетаскивании границы колонки.

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

  1. Установим масштаб экрана Windows в 100%.
  2. Перезапустим сеанс 1С.
  3. Попробуем изменить ширину колонки. Если в режиме 100% всё работает корректно, значит, проблема в обработке событий отрисовки при масштабировании. В этом случае единственным долгосрочным решением остается опять же обновление платформы, где работа с HighDPI была улучшена.

Способ 5. Очистка пользовательских настроек (временная мера)

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

Разберем, как сбросить эти настройки:

  1. В режиме «1С:Предприятие» откройте форму документа.
  2. Нажмите кнопку Ещё — Изменить форму.
  3. В открывшемся окне нажмите Ещё — Установить стандартные настройки.

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

Способ 6. Переключение в компактный режим интерфейса

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

Для этого выполним следующие действия:

  1. Перейдем в главное меню (три полоски в левом верхнем углу или кнопка «Сервис»).
  2. Выберем пункт Настройки — Параметры.
  3. В поле Вариант интерфейса выберем Компактный.
  4. Нажмем ОК и перезапустим программу (если потребуется).

Итоги

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

  1. Сначала попробуйте сбросить настройки формы до стандартных через «Изменить форму».
  2. Если это не помогает и работа стоит, установите фиксированную ширину для колонок в конфигураторе, отключив их растягивание.
  3. Как можно скорее запланируйте обновление платформы до актуальной версии (не ниже 8.3.18), так как это единственное полное решение проблемы, устраняющее саму причину, а не её последствия.
← На главную