Как программно установить выравнивание по центру в макете табличного документа 1С?

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

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

Проанализируем типичную ошибку

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


ТДВыводПечатиУТ.Область("C1").ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
ТДВыводПечатиУТ.Область("C1").ВертикальноеПоложение = ВертикальноеПоложение.Центр;
ТДВыводПечатиУТ.ШиринаКолонки = 4;
ТДВыводПечатиУТ.Вывести(ОбластьНазванияСтолбцов);

В данном случае ширина колонки может примениться, так как она задается для всей колонки целиком. Однако выравнивание текста не воспринимается. Причина кроется в том, что при последующем выводе секции макета (с помощью Вывести()) настройки ячеек из этой секции перекрывают наши программные установки. Если в визуальном макете у ячейки стоит выравнивание «Авто», то именно оно и попадет в итоговый документ.

Правильное решение: работа с возвращаемым значением

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

Самый надежный и правильный способ задать программное форматирование — применять его именно к этому возвращаемому значению. Разберем исправленный вариант кода:


// Сначала выводим область в результирующий табличный документ
ОбластьДляВыравнивания = ТДВыводПечатиУТ.Вывести(ОбластьНазванияСтолбцов);

// Затем применяем форматирование к выведенной области
ОбластьДляВыравнивания.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
ОбластьДляВыравнивания.ВертикальноеПоложение = ВертикальноеПоложение.Центр;

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

Альтернативный подход: настройка в визуальном макете

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

  1. Откройте макет печатной формы в режиме конфигуратора.
  2. Выделите нужную ячейку или выделите весь столбец, кликнув по его заголовку.
  3. Откройте палитру свойств (сочетание клавиш Alt+Enter).
  4. В разделе Оформление найдите свойства ГоризонтальноеПоложение и ВертикальноеПоложение.
  5. Установите жестко значение Центр (вместо значения Авто).

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

Дополнительные нюансы работы с выравниванием в 1С

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

Свойство «ПоВыделеннымКолонкам»

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

Влияние типа данных на выравнивание («Авто»)

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

  1. Числа: прижимаются к правому краю.
  2. Строки и Даты: прижимаются к левому краю.

Если вы принудительно центрируете числовые данные программно, стоит иметь в виду последствия при экспорте. При сохранении такого печатного документа в сторонние форматы (например, в Excel / XLSX), сторонние программы могут иначе интерпретировать визуальное выравнивание. Иногда жесткое изменение положения чисел приводит к тому, что Excel воспринимает их как текст и не позволяет использовать в формулах суммирования. Поэтому для колонок с суммами и количествами выравнивание «Авто» или строго «Вправо» часто является наиболее безопасным выбором.

← На главную