При настройке отчетов на системе компоновки данных (СКД) разработчики часто сталкиваются с типовой задачей: необходимо, чтобы заголовки колонок были отцентрированы для визуального порядка, а числовые значения (ресурсы) в этих же колонках — прижаты к правому краю для удобства чтения сумм. Стандартные настройки оформления часто применяют одно и то же правило сразу ко всей колонке, что не позволяет достичь нужного результата простым способом. Давайте разберем, как решить эту задачу различными методами.
Самый правильный и декларативный способ решения данной задачи — использование механизма Условное оформление на закладке Настройки. Ключевой момент заключается в том, что для одного и того же поля мы можем задать два разных правила, ограничив их область применения.
Условное оформление.Оформление установите Горизонтальное положение в значение Центр.Область использования выберите конкретное поле, а в дополнительных настройках области укажите Заголовок.Оформление установите Горизонтальное положение в значение Право (или Авто для числовых типов).Область использования для того же самого поля выберите Детальные записи или Группировки.Таким образом, система 1С применит правила избирательно: заголовок получит свой стиль, а данные — свой. Если в отчете много полей, рекомендуется явно указывать их в списке Оформляемые поля, чтобы настройки не конфликтовали с системными итогами или другими группировками.
Если задача требует более глобального подхода, можно обратиться к настройкам наборов данных. В конструкторе СКД на вкладке Наборы данных для каждого поля доступна колонка Оформление. Открыв диалоговое окно оформления, можно задать базовые параметры выравнивания.
Однако стоит помнить, что этот метод часто затрагивает всё поле целиком. Если вы используете сложные группировки полей, то управление через Оформление полей в наборах данных может оказаться недостаточно гибким. В таких случаях лучше использовать Макеты, где можно вручную создать области для заголовков и данных, предоставив каждой из них индивидуальное горизонтальное выравнивание.
Иногда возникают ситуации, когда декларативных настроек СКД недостаточно или структура отчета слишком динамична. В таких случаях мы можем воспользоваться программным обходом результата отчета после его вывода. Этот метод позволяет напрямую изменить свойства ячеек ТабличныйДокумент.
Давайте рассмотрим, как это может выглядеть на практике:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки());
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
// После вывода результата выполняем постобработку ячеек
Для НомСтроки = 1 По ДокументРезультат.ВысотаТаблицы Цикл
Для НомКолонки = 1 По ДокументРезультат.ШиринаТаблицы Цикл
Область = ДокументРезультат.Область(НомСтроки, НомКолонки);
// Проверяем, является ли ячейка заголовком (по тексту или параметру расшифровки)
Если Найти(Область.Текст, "НужноеИмяКолонки") > 0 Тогда
Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Важное примечание: Программный подход требует аккуратности. При изменении структуры отчета индексы ячеек могут смещаться, поэтому старайтесь идентифицировать области по их свойствам, а не по жестким координатам. Тем не менее, этот способ дает максимальную свободу действий, если стандартные средства Условного оформления не дают желаемого результата.
Резюмируя вышесказанное, для решения задачи выравнивания заголовков в СКД мы рекомендуем следующую последовательность действий:
Условное оформление с разграничением областей Заголовок и Детальные записи. Это наиболее быстрый и чистый способ.Оформляемые поля, чтобы четко ограничить область действия ваших настроек.Макет оформления, где стили заголовков определены на уровне шаблона.ТабличныйДокумент прибегайте только в крайних случаях, когда иные методы не позволяют добиться нужного визуального представления.Экспериментируйте с настройками Горизонтальное положение в Условном оформлении, и вы быстро научитесь управлять внешним видом любого отчета в 1С!