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

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

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

Почему нельзя напрямую изменить ширину системных заголовков

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

Разработчику доступно лишь бинарное управление видимостью этих элементов через свойство ОтображатьЗаголовки:

ТабДок.ОтображатьЗаголовки = Ложь;

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

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

Основное решение: отключение системных заголовков и создание собственной колонки

Единственный надежный способ получить узкую колонку с номерами строк — полностью отключить штатные заголовки и сформировать собственную колонку нумерации непосредственно в макете табличного документа.

Разберем реализацию этого подхода по шагам:

  1. Отключаем системные заголовки. В свойствах табличного документа или программно устанавливаем свойство ОтображатьЗаголовки = Ложь.
  2. Добавляем первую колонку в макет. Выделяем отдельную колонку слева под номер строки и задаем ей минимальную ширину через свойство ШиринаКолонки.
  3. Настраиваем шрифт и размещение текста. Чтобы колонка занимала как можно меньше места, выбираем компактный шрифт меньшего размера и задаем свойство РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Обрезать.
  4. Фиксируем колонку нумерации. Чтобы при горизонтальной прокрутке номера строк всегда оставались на виду, закрепляем левую область с помощью свойства ФиксацияСлева.

Посмотрим на программный пример вывода и настройки такого табличного документа:


// Отключаем стандартные системные заголовки
ТабДок.ОтображатьЗаголовки = Ложь;

// Задаем минимальную ширину для первой колонки нумерации (например, 3 символа)
КолонкаНомера = ТабДок.Область(, 1, , 1);
КолонкаНомера.ШиринаКолонки = 3;

// Закрепляем первую колонку, чтобы она не сдвигалась при горизонтальной прокрутке
ТабДок.ФиксацияСлева = 1;

// Если в документе есть шапка из 2 строк, фиксируем и ее
ТабДок.ФиксацияСверху = 2;

Как избежать искажения ширины колонок в шапке отчета

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

  1. Метод СоздатьФорматСтрок(). Этот метод позволяет строкам шапки иметь собственный независимый набор ширин колонок, не влияя на строки детальных записей.
  2. Объединение ячеек. В строках заголовков первую колонку объединяют со следующими ячейками с помощью метода Область.Объединить(), чтобы узкая ячейка нумерации визуально не разрывала шапку документа.

// Пример создания отдельного формата строк для области шапки
ОбластьШапки = Макет.ПолучитьОбласть("Шапка");
ОбластьШапки.СоздатьФорматСтрок();
ТабДок.Вывести(ОбластьШапки);

Альтернативные способы оптимизации пространства на мобильных устройствах

Если задача заключается исключительно в сохранении экранного пространства на смартфонах, рассмотрим альтернативные варианты компоновки данных:

  1. Масштабирование документа. Свойство ТабличныйДокумент.Масштаб позволяет пропорционально уменьшить отображение всего документа (например, установить значение 80 или 70 процентов), что освобождает значительную часть экрана.
  2. Использование элемента формы «Таблица». Если данные выводятся в интерактивную форму, стандартный элемент ТаблицаФормы дает больше гибкости: там можно штатно скрыть номера строк, объединить колонки в группы или вывести данные компактными карточками.
  3. Вывод через Поле HTML документа. Формирование данных в виде HTML-таблицы с CSS-стилями дает абсолютный контроль над шириной каждого столбца и отступами в пикселях, что исключает платформенные ограничения табличного документа.
← На главную