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

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

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

Различие между данными и их отображением

Прежде чем приступать к настройкам, давайте проанализируем важный нюанс архитектуры управляемых форм. Новички часто ищут свойства ширины в реквизитах формы (правая часть окна редактора формы), но там их нет. Мы должны четко понимать разницу:

  1. Реквизиты формы — это структура данных (то, что система считывает из базы или запроса).
  2. Элементы формы — это визуальное отображение этих данных (то, что видит пользователь).

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

Базовая настройка свойств колонки

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

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

Влияние настроек самой таблицы

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

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

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

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

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

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

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

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

Программная установка ширины

Рассмотрим пример, когда нам нужно задать ширину программно, например, в зависимости от прав доступа или типа отображаемых данных. Это можно сделать в процедуре ПриСозданииНаСервере. Посмотрим на код:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Выбираем нужный элемент (колонку)
    КолонкаДата = Элементы.СписокДата;
    
    // Устанавливаем ширину
    КолонкаДата.Ширина = 15;
    
    // Запрещаем растягивание, чтобы ширина была фиксированной
    КолонкаДата.РастягиватьПоГоризонтали = Ложь;
    
КонецПроцедуры

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

Использование Условного оформления

Существует еще один способ влияния на визуализацию — Условное оформление динамического списка. Хотя оно чаще используется для раскраски строк, в нем есть параметры оформления, такие как МинимальнаяШирина и МаксимальнаяШирина.

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

  1. Перейдите в свойства динамического списка (реквизита).
  2. Откройте ссылку Настройка списка, перейдите на вкладку Условное оформление.
  3. Добавьте новое правило. В оформлении выберите МинимальнаяШирина и МаксимальнаяШирина.
  4. В качестве оформляемых полей выберите нужную колонку.

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

Специфика колонок с флажками и картинками

Особую сложность представляют колонки с типом Булево (флажки). Выясним причину: платформа часто резервирует под них место, исходя из заголовка колонки. Если вы хотите сделать колонку-флажок максимально узкой:

  1. Удалите текст из свойства Заголовок или замените его коротким символом.
  2. Установите Ширина = 1 или 2.
  3. Убедитесь, что свойство Вид элемента установлено в Поле флажка.

Метод группировки для стабилизации размеров

Если колонка всё равно «плавает», попробуйте поместить её внутрь Группы колонок. В дереве элементов формы создайте новую группу, установите ей вид Группа колонок и перетащите туда ваше поле. После этого настройте Ширина и РастягиватьПоГоризонтали = Ложь не только у самого поля, но и у этой группы. Группировка заставляет движок управляемых форм более строго соблюдать границы элементов, находящихся внутри контейнера.

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

← На главную