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

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

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

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

Для начала проанализируем, как 1С обрабатывает сетку табличного документа. В обычном состоянии документ использует общую сетку. Это означает, что индексы колонок и их физическая ширина синхронизированы для всего листа. Чтобы разорвать эту связь, используется функция «Создать формат строк». Она позволяет выделить определенную строку (или диапазон строк) в автономную область, ширина колонок в которой будет регулироваться независимо от остальной части документа.

Рассмотрим ситуацию: вам нужно создать сложную «шапку» документа, где в первой строке три колонки одинаковой ширины, а во второй строке — пять колонок разной ширины. Без использования индивидуальных форматов вам пришлось бы объединять множество мелких ячеек, что крайне неудобно при поддержке макета. С использованием форматов строк мы можем просто задать каждой строке свою структуру.

Инструкция: как изменить ширину колонок вручную в конфигураторе

Выясним, как управлять форматами в режиме редактирования макета. Если вы обнаружили, что в вашем макете колонки «разъехались» (одни и те же столбцы имеют разную ширину в разных строках) и хотите это исправить, или наоборот — хотите создать индивидуальную сетку, выполните следующие действия:

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

Визуальный контроль форматов строк

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

Серые маркеры (засечки): Указывают на то, что в данной строке используется стандартный (общий) формат документа. Изменение ширины здесь повлияет на все строки с серыми маркерами.

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

Если вы выделите строку с индивидуальным форматом, линейка сверху перестроится, показывая границы колонок именно для этой строки. Это позволяет очень точно подгонять размеры элементов интерфейса.

Программное управление форматом строк

В некоторых случаях структуру табличного документа нужно менять динамически с помощью встроенного языка. Для этого в объекте ОбластьЯчеекТабличногоДокумента предусмотрены специальные методы. Рассмотрим примеры их использования.

Чтобы программно создать индивидуальный формат для области, используем метод СоздатьФорматСтрок(). Посмотрим на пример кода:


// Получаем область строк, для которых нужно установить свой формат
ОбластьДляФормата = ТабДок.Область("R5:R7"); 
// Создаем индивидуальный формат для этих строк
ОбластьДляФормата.СоздатьФорматСтрок();
// Теперь можем установить ширину конкретной колонки только для этой области
ОбластьДляФормата.Область(1, 1, 1, 1).ШиринаКолонки = 25;

Если же стоит задача вернуть строки к общему виду, мы используем метод Очистить(), передавая соответствующие параметры. Важно помнить, что этот метод универсален и может очищать как значения, так и форматирование.


// Очищаем только формат строк, возвращая область к общей сетке
// Параметры метода Очистить: (Значения, Оформление, Примечания, Гиперссылки)
// Но для форматов строк часто проще переназначить область или использовать 
// специфические настройки через объект ТабличныйДокумент.
Область.Очистить(Ложь, Истина, Ложь, Ложь);

Также полезно знать о свойстве ФорматСтрок. Оно позволяет проверить, установлены ли для данной области индивидуальные настройки ширины колонок. Это логическое свойство (Булево), которое возвращает Истина, если формат создан.

Особенности и практические советы

Рассмотрим несколько важных нюансов, которые помогут избежать ошибок при работе с макетами:

  1. Производительность: Не стоит злоупотреблять индивидуальными форматами. Если в документе на 10 000 строк каждая строка будет иметь свой уникальный формат, это значительно увеличит время формирования отчета и объем потребляемой памяти. Старайтесь использовать общую сетку везде, где это возможно.
  2. Симметричное изменение: Если вам нужно уменьшить ширину колонки так, чтобы в нескольких строках колонки сдвинулись симметрично (как спрашивал пользователь в сообщении 4), вам необходимо выделить всю группу строк, обладающую общим индивидуальным форматом, и менять ширину именно для всей выделенной группы.
  3. Копирование областей: Помните, что при копировании строк из одного макета в другой (или внутри одного документа) через Вывести() или Присоединить(), настройки формата строк обычно сохраняются. Это позволяет создавать сложные шаблоны из разных кусков макета.
  4. Автовысота: Использование индивидуальных форматов строк не мешает работе механизма АвтоВысотаСтроки. Текст будет корректно переноситься по словам в соответствии с новой шириной колонки.

Таким образом, использование механизма «Формат строк» — это профессиональный способ создания сложных и эстетичных печатных форм в 1С, позволяющий гибко управлять геометрией табличного документа без лишнего нагромождения объединенных ячеек.

← На главную