Почему не регулируется и сбрасывается ширина колонок в документе «Заказ клиента» в 1С:Управление торговлей и как это исправить?

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

При работе в программе 1С:Управление торговлей 11 (в частности, на релизах ветки 11.4) пользователи часто сталкиваются с неприятным поведением интерфейса «Такси» в управляемых формах. При попытке вручную растянуть границы колонок в табличной части «Товары» документа «Заказ клиента», ширина колонки ссылочного типа (например, Номенклатура, Характеристика) мгновенно возвращается к исходному сжатому состоянию. При этом числовые колонки (например, Количество, Цена, Сумма) масштабируются абсолютно корректно и запоминают пользовательские настройки.

В этой статье мы подробно разберем причины возникновения данной ошибки интерфейса платформы 1С:Предприятие 8.3 и рассмотрим эффективные практические способы ее решения по шагам.

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

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

  1. Некорректная работа свойства «Растягивать по горизонтали». По умолчанию для большинства колонок это свойство установлено в значение Авто. Платформа пытается автоматически рассчитать распределение свободного пространства формы, отдавая приоритет числовым полям и сжимая текстовые и ссылочные типы данных.
  2. Ошибки отрисовки в старых релизах платформы. Баг стабильно воспроизводится на версиях платформы 1С:Предприятие 8.3.12 и ранних сборках 8.3.13. Алгоритмы расчета динамической ширины в веб-клиенте и тонком клиенте на этих версиях имели внутренние ошибки округления пикселей.
  3. Повреждение пользовательского кэша настроек. Настройки формы (включая ширину колонок) сохраняются в специальной системной таблице базы данных и в локальных файлах пользователя на компьютере. Если кэш повреждается, форма перестает «запоминать» изменения геометрии окна.
  4. Влияние масштабирования операционной системы Windows. При использовании масштаба экрана отличное от 100% (например, 125% или 150%) в Windows, платформа 1С некорректно обрабатывает перетаскивание границ колонок мышкой.

Рассмотрим подробнее пошаговые методы устранения данной неисправности.

Решение 1. Изменение свойства «Растягивать по горизонтали» в настройках формы

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

Разберем этот процесс по шагам:

  1. Откроем документ «Заказ клиента» и перейдем в форму, где расположена проблемная табличная часть «Товары».
  2. В правом верхнем углу окна нажмем кнопку «Еще» и выберем пункт меню «Изменить форму...».
  3. В открывшемся дереве элементов найдем группу, отвечающую за табличную часть (обычно это ГруппаТовары или список элементов внутри таблицы Товары).
  4. Найдем элемент ТоварыНоменклатура (или другую колонку, которая сжимается обратно).
  5. В правой части окна настроек в списке свойств найдем параметр «Растягивать по горизонтали». По умолчанию там установлено значение Авто.
  6. Принудительно изменим это значение на «Нет».
  7. Ниже в поле «Ширина» зададим фиксированное базовое значение в символах (например, 30 или 40).
  8. Нажмем кнопки «Применить» и «ОК».

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

Решение 2. Программное отключение авто-растягивания через расширение конфигурации

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

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

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

&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    // Проверим наличие элемента на форме во избежание ошибок
    Если Элементы.Найти("ТоварыНоменклатура") <> Неопределено Тогда
        
        // Отключаем автоматический расчет ширины колонки Номенклатура
        Элементы.ТоварыНоменклатура.РастягиватьПоГоризонтали = Ложь;
        
        // Устанавливаем комфортную ширину по умолчанию
        Элементы.ТоварыНоменклатура.Ширина = 35;
        
    КонецЕсли;
    
    Если Элементы.Найти("ТоварыХарактеристика") <> Неопределено Тогда
        Элементы.ТоварыХарактеристика.РастягиватьПоГоризонтали = Ложь;
        Элементы.ТоварыХарактеристика.Ширина = 20;
    КонецЕсли;
    
КонецПроцедуры

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

Решение 3. Обновление платформы «1С:Предприятие 8.3»

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

Проанализируем рекомендации разработчиков: для стабильной работы конфигураций на управляемых формах рекомендуется использовать версию платформы не ниже 8.3.14.1565, а оптимальным вариантом будет переход на актуальные сборки веток 8.3.16 или 8.3.18+ (в зависимости от режима совместимости вашей конфигурации).

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

Решение 4. Очистка кэша и сброс пользовательских настроек

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

Выполним сброс настроек формы по шагам:

  1. В документе «Заказ клиента» нажмем кнопку «Еще» -> «Изменить форму...».
  2. В открывшемся окне нажмем кнопку «Еще» (внутри формы настройки) и выберем команду «Установить стандартные настройки».
  3. Нажмем «Применить».

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

  1. Закроем все запущенные сеансы 1С.
  2. Откроем проводник Windows и перейдем по путям:
    • %userprofile%\AppData\Local\1C\1Cv8
    • %userprofile%\AppData\Roaming\1C\1Cv8
  3. Удалим все папки с буквенно-цифровыми названиями (например, ascii-xxxx-xxxx...), которые представляют собой кэш метаданных и настроек интерфейса.
  4. Запустим 1С заново и проверим работу таблицы.

Дополнительные параметры, требующие проверки

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

Применяя данные подходы комплексно, мы гарантированно избавимся от проблемы «схлопывания» табличной части в документе «Заказ клиента» и обеспечим пользователям комфортную и стабильную работу в программе 1С:Управление торговлей.

← На главную