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