При разработке сложных интерфейсов на управляемых формах 1С программисты часто сталкиваются с ситуацией, когда табличная часть перенасыщена данными. Несмотря на использование вложенных групп колонок, платформа может игнорировать заданные параметры ширины, создавая неудобный горизонтальный скролл. В этой статье мы подробно рассмотрим, почему это происходит, и разберем комплекс мер по принудительному управлению экранным пространством.
Прежде всего, проанализируем поведение платформы. В управляемом приложении 1С расчет ширины колонки — это результат сложного алгоритма, который учитывает содержимое ячейки, тип данных и, что наиболее критично, длину заголовка. Если вы написали в заголовке «Остаток товара на складах в основном регионе», платформа никогда не сожмет колонку меньше, чем ширина этого текста, даже если в самой ячейке стоит маленькое число.
Рассмотрим по шагам, как мы можем победить этот механизм и уместить все данные в рамках одного экрана.
Самый эффективный способ уменьшить ширину — это работа с текстом шапки. Если сократить название невозможно по смыслу, воспользуемся следующей методикой:
Заголовок колонки сокращенное наименование (например, «Ост.» вместо «Остаток»).Подсказка запишем полное наименование поля. Тогда при наведении курсора пользователь увидит расшифровку.Ширина в конкретное числовое значение (например, 5 или 10).РастягиватьПоГоризонтали в значение Ложь. Без этого платформа может попытаться «дозаполнить» пустое место этой колонкой.Если же сокращение неприемлемо, проанализируем возможность использования многострочных заголовков. Для этого в свойствах самой таблицы увеличим параметр ВысотаШапки до 2 или 3. Теперь мы можем программно установить заголовок с переносом строки:
// Пример установки многострочного заголовка при создании формы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.ТоварыКоличество.Заголовок = "Количество" + Символы.ПС + "(в упак.)";
КонецПроцедуры
Когда колонок слишком много, их не обязательно выстраивать в одну линию. Посмотрим на структуру групп колонок. В управляемой форме группы колонок имеют свойство Группировка. Выясним, как это помогает экономить место:
Проанализируем ситуацию: если у нас есть «Цена» и «Валюта», логично сгруппировать их вертикально. Тогда ширина таблицы уменьшится практически вдвое в этом месте.
Часто настройки ширины игнорируются из-за того, что колонка находится внутри нескольких контейнеров (Группа - Группа - Таблица). Разберем правила настройки иерархии:
РастягиватьПоГоризонтали у самой таблицы. Если оно установлено в Да, платформа будет распределять лишние пиксели между всеми колонками, игнорируя ваши настройки узкой ширины.АвтоМаксимальнаяШирина. Если установить его в Ложь и задать МаксимальнаяШирина, это создаст жесткий «потолок» для размера элемента.Бывает, что настройки в конфигураторе перекрываются сохраненными пользовательскими настройками формы. Чтобы задать ширину «жестко», выполним программную установку в событии ПриСозданииНаСервере. Это решение работает более приоритетно, чем значения из метаданных.
&НаСервере
Процедура НастроитьШиринуКолонок()
// Принудительно устанавливаем ширину для ключевых колонок
Элементы.СписокНоменклатура.Ширина = 25;
Элементы.СписокКоличество.Ширина = 8;
Элементы.СписокСумма.Ширина = 12;
// Отключаем возможность растягивания для фиксированных полей
Элементы.СписокКоличество.РастягиватьПоГоризонтали = Ложь;
Элементы.СписокСумма.РастягиватьПоГоризонтали = Ложь;
КонецПроцедуры
Вопрос об управлении разделителями между группами также крайне важен для эргономики. В управляемых формах стандартный «подвижный» разделитель появляется автоматически, если у нас есть группы с типом Группа страниц или горизонтальные группы с элементами, имеющими право на растягивание.
Если же нам нужен визуальный разделитель-линия, который бы четко отделял одну группу таблиц от другой, воспользуемся приемом с декорациями:
Горизонтальная.Декорация - Надпись.Ширина равной 1 или 2.Напоследок проанализируем глобальные настройки формы. В свойствах корневого элемента (Форма) есть параметр ВариантМасштаба. Установка значения Компактный позволяет значительно уменьшить внутренние отступы в ячейках таблицы. Это часто является «последним шансом» уместить данные, когда все остальные методы настройки колонок уже исчерпаны.
Также стоит помнить, что шрифт напрямую влияет на минимальную ширину. Если в системе установлен крупный шрифт, 1С зарезервирует под него место. Для служебных таблиц можно рассмотреть установку чуть меньшего шрифта в свойствах оформления таблицы.
Для того чтобы принудительно уместить все колонки, мы должны действовать комплексно: сокращать заголовки, перенося полную информацию в подсказки, отключать авто-растягивание как у колонок, так и у таблицы в целом, и использовать вертикальную группировку для второстепенных данных. Программная установка свойств в ПриСозданииНаСервере позволит гарантировать, что ваши настройки не будут проигнорированы платформой.