При работе в программе 1С:Управление торговлей 11 (в частности, на релизах ветки 11.4) пользователи часто сталкиваются с неприятным поведением интерфейса «Такси» в управляемых формах. При попытке вручную растянуть границы колонок в табличной части «Товары» документа «Заказ клиента», ширина колонки ссылочного типа (например, Номенклатура, Характеристика) мгновенно возвращается к исходному сжатому состоянию. При этом числовые колонки (например, Количество, Цена, Сумма) масштабируются абсолютно корректно и запоминают пользовательские настройки.
В этой статье мы подробно разберем причины возникновения данной ошибки интерфейса платформы 1С:Предприятие 8.3 и рассмотрим эффективные практические способы ее решения по шагам.
Прежде чем переходить к действиям, проанализируем ситуацию. Такое поведение элементов интерфейса связано с особенностями расчета ширины управляемых таблиц движком платформы 1С. Основными факторами, провоцирующими «схлопывание» колонок, являются:
Авто. Платформа пытается автоматически рассчитать распределение свободного пространства формы, отдавая приоритет числовым полям и сжимая текстовые и ссылочные типы данных.8.3.12 и ранних сборках 8.3.13. Алгоритмы расчета динамической ширины в веб-клиенте и тонком клиенте на этих версиях имели внутренние ошибки округления пикселей.Рассмотрим подробнее пошаговые методы устранения данной неисправности.
Самый быстрый и надежный способ решить проблему без программирования и изменения конфигурации — настроить свойства отображения элементов непосредственно в режиме 1С:Предприятие.
Разберем этот процесс по шагам:
ГруппаТовары или список элементов внутри таблицы Товары).ТоварыНоменклатура (или другую колонку, которая сжимается обратно).Авто.30 или 40).После выполнения этих действий колонка перестанет зависеть от автоматического алгоритма платформы и позволит пользователю свободно растягивать свои границы, запоминая установленные размеры.
Если проблему необходимо решить централизованно для всех пользователей информационной базы, лучшим выходом будет написание небольшого расширения. Это избавит от необходимости настраивать форму индивидуально под каждым пользователем.
Для реализации этого метода выполним следующие действия:
ПриСозданииНаСервере, используя аннотацию &После.
&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Проверим наличие элемента на форме во избежание ошибок
Если Элементы.Найти("ТоварыНоменклатура") <> Неопределено Тогда
// Отключаем автоматический расчет ширины колонки Номенклатура
Элементы.ТоварыНоменклатура.РастягиватьПоГоризонтали = Ложь;
// Устанавливаем комфортную ширину по умолчанию
Элементы.ТоварыНоменклатура.Ширина = 35;
КонецЕсли;
Если Элементы.Найти("ТоварыХарактеристика") <> Неопределено Тогда
Элементы.ТоварыХарактеристика.РастягиватьПоГоризонтали = Ложь;
Элементы.ТоварыХарактеристика.Ширина = 20;
КонецЕсли;
КонецПроцедуры
Этот простой код гарантирует, что при открытии документа у всех пользователей колонки будут иметь четко заданный размер и корректно поддаваться ручной регулировке.
Как показывает практика эксплуатации конфигурации «Управление торговлей 11.4», многие ошибки интерфейса управляемых форм «лечатся» обновлением технологической платформы. Если у вас установлена платформа версии 8.3.12 или ранние сборки 8.3.13, настоятельно рекомендуется выполнить обновление.
Проанализируем рекомендации разработчиков: для стабильной работы конфигураций на управляемых формах рекомендуется использовать версию платформы не ниже 8.3.14.1565, а оптимальным вариантом будет переход на актуальные сборки веток 8.3.16 или 8.3.18+ (в зависимости от режима совместимости вашей конфигурации).
В более новых версиях платформы разработчики полностью переработали математическую модель расчета интерфейса «Такси», убрав ошибки округления при масштабировании DPI и фиксации колонок табличных частей.
Если на одном компьютере ширина колонок регулируется нормально, а на другом — сжимается, это явный признак повреждения локального кэша или сохраненных настроек конкретного пользователя.
Выполним сброс настроек формы по шагам:
Если стандартный сброс не помог, необходимо очистить кэш платформы на рабочем месте пользователя:
%userprofile%\AppData\Local\1C\1Cv8%userprofile%\AppData\Roaming\1C\1Cv8ascii-xxxx-xxxx...), которые представляют собой кэш метаданных и настроек интерфейса.Если вышеописанные способы не принесли желаемого результата, проанализируем еще два редких системных фактора:
ТоварыНоменклатура свойство АвтоМаксимальнаяШирина. Если оно установлено в значение Да (Истина), платформа жестко ограничивает предел растяжения колонки на основании типа данных. Установите это свойство в значение Нет (Ложь).Применяя данные подходы комплексно, мы гарантированно избавимся от проблемы «схлопывания» табличной части в документе «Заказ клиента» и обеспечим пользователям комфортную и стабильную работу в программе 1С:Управление торговлей.