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

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

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

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

По умолчанию табличный документ 1С использует единую (сквозную) сетку колонок для всего документа. Это означает, что первая колонка имеет фиксированную ширину от первой до последней строки. Если изменить ширину ячейки в произвольном месте, меняется весь вертикальный столбец.

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

Основное решение: программное создание формата строк

Разберем по шагам, как программно разделить сетку табличного документа с помощью метода СоздатьФорматСтрок().

Данный метод вызывается у объекта ОбластьТабличногоДокумента, выделяющего строки целиком. После его вызова для указанной области создается отдельная сетка колонок, которую можно свободно изменять, не влияя на предыдущие и последующие строки.

Рассмотрим пример кода, демонстрирующий этот подход:


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

// Выполняем вывод нужных данных в табличный документ...

// Выделяем область полученных строк целиком и создаем для них собственный формат строк
ТабДокумент.Область(НачалоНовогоФорматаСтрок, , ТабДокумент.ВысотаТаблицы, ).СоздатьФорматСтрок();

// Задаем ширину колонок для первой строки нового формата (изменения применятся ко всему блоку)
ТабДокумент.Область(НачалоНовогоФорматаСтрок, 1).ШиринаКолонки = 15;
ТабДокумент.Область(НачалоНовогоФорматаСтрок, 2).ШиринаКолонки = 10;
ТабДокумент.Область(НачалоНовогоФорматаСтрок, 3).ШиринаКолонки = 35;

Важные детали алгоритма:

  1. Сначала фиксируется индекс начальной строки выводимой области через свойство ВысотаТаблицы.
  2. Данные выводятся в документ.
  3. С помощью метода Область() выбираются строки целиком (второй и четвертый параметры области оставляем пустыми).
  4. Вызывается метод СоздатьФорматСтрок().
  5. Указываются нужные значения свойства ШиринаКолонки для каждой ячейки первой строки нового блока.

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

Проанализируем другие популярные техники построения сложных макетов с разной шириной колонок:

  1. Объединение колонок (метод матрицы):

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

  2. Внедрение рисунка с типом «Табличный документ»:

    В основной табличный документ добавляется графический объект Рисунок, которому назначается тип ТипРисункаТабличногоДокумента.ТабличныйДокумент. Внутри этого рисунка создается автономная таблица со своей независимой сеткой колонок, не влияющая на основной документ.

  3. Интерактивное создание формата строк в редакторе:

    При оформлении макета в Конфигураторе или в режиме «1С:Предприятие» можно выделить нужные строки целиком за их заголовки слева и изменить ширину колонки мышью (или с зажатой клавишей Ctrl). Платформа автоматически предложит создать новый формат строк.

На что стоит обратить внимание

Посмотрим на технические особенности и ограничения, о которых важно помнить при работе с форматами строк:

← На главную