Как сделать независимую ширину колонок для разных областей в макете и печатной форме 1С?

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

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

Разберем подробно, за счет какого механизма платформы реализуется независимая ширина колонок для разных строк, как это настроить в Конфигураторе и как управлять этим процессом программно.

Принцип работы механизма «Формат строк»

По умолчанию объект ТабличныйДокумент имеет единую сетку: ширина колонок распространяется сверху донизу на весь лист. Чтобы разорвать эту зависимость и задать индивидуальную ширину колонок для конкретной строки или группы строк, в платформе предусмотрен специальный механизм — Формат строк.

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

Интерактивная настройка формата строк в макете

Рассмотрим по шагам, как разделить ширину колонок при редактировании макета в Конфигураторе или в режиме «1С:Предприятие»:

  1. Выделение строк целиком: Нажмем на номера строк слева, чтобы выделить всю строку или диапазон строк от левого до правого края макета. Важно выделить именно строки целиком, а не просто диапазон ячеек.
  2. Создание формата: Наведем курсор мыши на заголовок колонки сверху и начнем изменять ее ширину. Платформа отобразит диалоговое окно с вопросом: «Создать новый формат строк?». После подтверждения для выделенного диапазона создается отдельная сетка.
  3. Альтернативный способ через меню: Выделив строки, перейдем в главное меню: Таблица → Формат → Создать формат строк (или вызовем контекстное меню правой кнопкой мыши по номерам строк и выберем соответствующий пункт).
  4. Настройка колонок: Теперь можно свободно двигать границы колонок в выделенной секции — остальные секции макета останутся без изменений.
  5. Отмена разделения: Если требуется вернуть строки к общей сетке макета, выделим их целиком, нажмем правую кнопку мыши и выберем пункт Удалить формат строк.

Программное создание формата строк

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

Для этих целей у объекта ОбластьЯчеекТабличногоДокумента предусмотрен метод СоздатьФорматСтрок(). Разберем пример кода:


// Создаем результирующий табличный документ
ТабДокумент = Новый ТабличныйДокумент;

// 1. Формируем шапку со стандартной сеткой
ТабДокумент.Область(1, 1).Текст = "Шапка документа (общая сетка)";
ТабДокумент.Область(1, 1).ШиринаКолонки = 30;

// 2. Выделяем диапазон строк под табличную часть (строки 3-10) целиком
ОбластьСетки = ТабДокумент.Область(3, , 10, );

// Создаем для этого диапазона независимый формат строк
ОбластьСетки.СоздатьФорматСтрок();

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

// Заполняем данными
ТабДокумент.Область(3, 1).Текст = "№";
ТабДокумент.Область(3, 2).Текст = "Номенклатура";
ТабДокумент.Область(3, 3).Текст = "Сумма";

Посмотрим на важный нюанс: метод СоздатьФорматСтрок() применяется только к области, которая представляет собой строки целиком. Если попытаться вызвать метод для прямоугольной области вида ТабДокумент.Область(1, 1, 5, 3), платформа сгенерирует исключение.

Особенности и практические рекомендации при использовании форматов строк

Разберем несколько важных аспектов, о которых необходимо помнить разработчику при проектировании макетов с независимыми форматами строк:

  1. Экспорт в Microsoft Excel: Форматы файлов .xls и .xlsx не поддерживают независимую ширину колонок для разных строк. При сохранении такого документа 1С разбивает колонки на множество мелких подколонок и объединяет их ячейки. Это усложняет последующую работу пользователей с таблицей в Excel (затрудняется сортировка, фильтрация и расчет по формулам).
  2. Выделение прямоугольных областей: В табличном документе с разными форматами строк невозможно выделить прямоугольный блок ячеек, если граница выделения пересекает стык разных форматов. Копирование в таких случаях возможно только построчно.
  3. Производительность: Большое количество форматов строк в тяжелых многостраничных отчетах увеличивает нагрузку на оперативную память и отрисовку документа. Если печатная форма типовая и не требует сложной геометрии, зачастую проще спроектировать общую сетку колонок и комбинировать их с помощью метода Объединить().
← На главную