В процессе работы с управляемым интерфейсом 1С (особенно в режиме «Такси») пользователи и разработчики часто сталкиваются с неприятной ситуацией: ширина колонки в динамическом списке или табличной части самопроизвольно увеличивается, а вернуть её в исходное состояние простым перетаскиванием границы не получается. Курсор мыши просто не меняет свой вид на двунаправленную стрелку, и граница колонки кажется «заблокированной».
В этой статье мы подробно разберем причины такого поведения платформы и проанализируем все доступные способы решения — от простых пользовательских манипуляций до программных методов управления формой.
Перед тем как переходить к решению, выясним причину. В управляемом приложении за отрисовку интерфейса отвечает сложный алгоритм компоновки. Если пользователь один раз вручную сильно растянул колонку, платформа запоминает это значение в системном хранилище настроек как фиксированную ширину.
Проблемы возникают в следующих случаях:
РастягиватьПоГоризонтали в значение Да.Это самый быстрый и эффективный метод, который не требует изменения конфигурации. Рассмотрим, как объяснить это пользователю:
После этого действия все пользовательские изменения ширины, видимости и расположения колонок будут удалены, и форма вернется к тому виду, который был задан программистом в конфигураторе. Важно помнить: этот способ сбрасывает настройки всей формы, а не одной конкретной колонки.
Если сбрасывать все настройки формы не хочется, можно попробовать изменить ширину конкретного поля через тот же диалог:
15 или 20.Если кнопка Еще — Изменить форму скрыта разработчиком для экономии места на экране, её можно временно вернуть через свойства корневого элемента формы в конфигураторе, установив флажок АвтоматическоеСодержимое для командной панели.
Проанализируем ситуацию, когда последняя значимая колонка (например, «Автор» или «Комментарий») растягивается на всю ширину монитора, что выглядит неэстетично. Чтобы этого избежать, применим хитрость с «пустой» колонкой:
В конец таблицы (самым последним элементом) добавим новое поле, не связанное с данными, или пустую колонку. Для этой колонки в конфигураторе установим следующие свойства:
Да.1.Для всех остальных информативных колонок установим свойство РастягиватьПоГоризонтали в значение Нет. Теперь платформа будет отдавать все лишнее свободное пространство невидимой последней колонке, а ваши данные будут сгруппированы компактно слева.
Если пользователи часто жалуются на «кривые» колонки, а объяснять им процедуру через «Изменить форму» слишком долго, мы можем реализовать скрытый механизм очистки настроек. Посмотрим на пример кода, который удаляет настройки формы из системного хранилища:
// Процедура для вызова на сервере
Процедура СброситьНастройкиФормыНаСервере(ИмяФормы)
КлючОбъекта = "Общее/НастройкиФорм/" + ИмяФормы;
ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, Неопределено, ИмяПользователя());
КонецПроцедуры
Этот код полностью очищает кэш настроек для конкретного окна. Пользователю достаточно будет закрыть и снова открыть форму, чтобы увидеть её в первозданном виде. Такую команду можно вынести в подменю «Сервис» или вызвать через контекстное меню.
Разберем, как минимизировать вероятность появления проблемы еще на этапе разработки. Проанализируем ключевые свойства элементов таблицы:
Да. Это ограничит чрезмерное расширение колонки, если в данных встретится очень длинная строка.10), чтобы пользователь не мог случайно «схлопнуть» её до невидимого состояния.ФиксацияСлева) меняет алгоритм отрисовки разделителей, что иногда помогает избежать «залипания» границ в сложных формах.Проблема с шириной колонок в 1С 8.3 чаще всего является следствием того, что платформа сохраняет некорректные пользовательские настройки. Для быстрого исправления «здесь и сейчас» используйте Установить стандартные настройки в диалоге Изменить форму. Для предотвращения таких ситуаций в будущем — используйте колонку-заглушку с включенным растягиванием в самом конце списка. Это гарантирует, что значимые данные не будут «размазаны» по экрану вне зависимости от разрешения монитора пользователя.