Как изменить ширину колонок в управляемых формах 1С, если они перестали двигаться мышкой?

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

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

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

Почему «залипают» колонки в управляемых формах?

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

Проблемы возникают в следующих случаях:

  1. У колонки программно или интерактивно установилось свойство РастягиватьПоГоризонтали в значение Да.
  2. Колонка является последней в списке, и платформа пытается заполнить ею всё оставшееся свободное пространство окна.
  3. Сработал механизм автоматического расчета ширины, который из-за длинных данных в одной из строк «раздул» поле до максимальных пределов.
  4. Изменен масштаб интерфейса (Ctrl + колесико мыши), из-за чего визуальные границы разделителей сместились относительно их реальных зон захвата.

Способ 1. Сброс к стандартным настройкам (Пользовательский)

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

  1. Нажмите на кнопку Еще в верхней части формы (или в командной панели таблицы).
  2. Выберите пункт Изменить форму....
  3. В открывшемся окне в верхнем меню нажмите Еще и выберите команду Установить стандартные настройки.
  4. Нажмите ОК.

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

Способ 2. Ручной ввод числового значения ширины

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

  1. Зайдите в Изменить форму....
  2. Найдите в дереве элементов нужную колонку (поле).
  3. В правой части окна найдите свойство Ширина.
  4. Вместо «0» (автоматически) или огромного числа введите разумное значение, например, 15 или 20.
  5. Нажмите Применить.

Если кнопка Еще — Изменить форму скрыта разработчиком для экономии места на экране, её можно временно вернуть через свойства корневого элемента формы в конфигураторе, установив флажок АвтоматическоеСодержимое для командной панели.

Способ 3. Использование колонки-заглушки (Метод разработчика)

Проанализируем ситуацию, когда последняя значимая колонка (например, «Автор» или «Комментарий») растягивается на всю ширину монитора, что выглядит неэстетично. Чтобы этого избежать, применим хитрость с «пустой» колонкой:

В конец таблицы (самым последним элементом) добавим новое поле, не связанное с данными, или пустую колонку. Для этой колонки в конфигураторе установим следующие свойства:

Для всех остальных информативных колонок установим свойство РастягиватьПоГоризонтали в значение Нет. Теперь платформа будет отдавать все лишнее свободное пространство невидимой последней колонке, а ваши данные будут сгруппированы компактно слева.

Способ 4. Программный сброс настроек формы

Если пользователи часто жалуются на «кривые» колонки, а объяснять им процедуру через «Изменить форму» слишком долго, мы можем реализовать скрытый механизм очистки настроек. Посмотрим на пример кода, который удаляет настройки формы из системного хранилища:


// Процедура для вызова на сервере
Процедура СброситьНастройкиФормыНаСервере(ИмяФормы)
    КлючОбъекта = "Общее/НастройкиФорм/" + ИмяФормы;
    ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, Неопределено, ИмяПользователя());
КонецПроцедуры

Этот код полностью очищает кэш настроек для конкретного окна. Пользователю достаточно будет закрыть и снова открыть форму, чтобы увидеть её в первозданном виде. Такую команду можно вынести в подменю «Сервис» или вызвать через контекстное меню.

Способ 5. Настройка свойств в конфигураторе

Разберем, как минимизировать вероятность появления проблемы еще на этапе разработки. Проанализируем ключевые свойства элементов таблицы:

Резюме

Проблема с шириной колонок в 1С 8.3 чаще всего является следствием того, что платформа сохраняет некорректные пользовательские настройки. Для быстрого исправления «здесь и сейчас» используйте Установить стандартные настройки в диалоге Изменить форму. Для предотвращения таких ситуаций в будущем — используйте колонку-заглушку с включенным растягиванием в самом конце списка. Это гарантирует, что значимые данные не будут «размазаны» по экрану вне зависимости от разрешения монитора пользователя.

← На главную