Как правильно настроить динамический список, чтобы его высота автоматически адаптировалась под размер окна?

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

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

Проблема «двойного скролла» и иерархия растягивания

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

Рассмотрим каждый элемент в дереве формы, начиная от самого списка и заканчивая корнем (самой формой). У каждого родительского контейнера (группы, страницы, группы страниц) должно быть установлено свойство РастягиватьПоВертикали в значение Да (или Авто, если платформа верно определяет контекст). Если хотя бы один промежуточный элемент в этой иерархии имеет жесткое ограничение по высоте или настройку «не растягивать», цепочка передачи свободного пространства обрывается, и динамический список сжимается до своей минимальной высоты.

Хитрость с минимальной высотой списка

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

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

Выясним причину, почему это помогает. Когда мы указываем высоту 10, платформа резервирует место под 10 строк. Если экран пользователя мал, эти 10 строк могут не влезть, и появится общий скролл формы. Если же мы указываем 1, платформа понимает, что списку нужно минимум места, но за счет разрешенного растягивания она отдает ему все оставшееся свободное пространство в окне. Таким образом, список всегда будет занимать максимум места, не выталкивая другие элементы за границы экрана.

Влияние соседних вкладок и групп страниц

Проанализируем ситуацию, упомянутую в обсуждении: список находится на одной из вкладок ГруппыСтраниц. Это самый коварный случай. Дело в том, что высота всей группы страниц часто определяется по самой высокой вкладке. Рассмотрим алгоритм поиска проблемы:

Если на «Вкладке №1» у вас расположен динамический список, а на «Вкладке №2» — огромное количество реквизитов, надписей и кнопок, которые не помещаются на экран, то платформа увеличит высоту всей ГруппыСтраниц под размер второй вкладки. В итоге на первой вкладке список растянется до этой же огромной высоты, и у всей формы появится полоса прокрутки.

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

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

Свойства «АвтоМаксимальнаяВысота» и «ВертикальнаяПрокрутка»

Разберем типичную ошибку начинающих разработчиков — использование свойства АвтоМаксимальнаяВысота. Многие полагают, что это свойство заставляет список расти. На самом деле, всё наоборот. Это ограничитель. Если оно включено, платформа не позволит списку стать выше определенного порога, даже если на мониторе 4K есть свободное место. Для создания по-настоящему адаптивного интерфейса установите АвтоМаксимальнаяВысота в значение Нет.

Также обратим внимание на свойства самой формы:

Командные панели и декорации

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

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

Резюмируя вышесказанное: идеальная настройка для адаптивного динамического списка — это сочетание минимальной заданной высоты (Высота = 1), включенного вертикального растягивания у самого списка и всех его родителей. А чтобы еще больше прокачать список, добавив в него новую информацию, или реализовать флажки в динамическом списке, следуйте принципам чистого и функционального интерфейса.

← На главную