При разработке сложных аналитических отчетов в системе компоновки данных (СКД) часто возникает ситуация, когда колонки содержат числовые данные небольшой ширины, но их заголовки слишком длинные. Это приводит к тому, что отчет становится избыточно широким и неудобным для чтения. Оптимальным решением в таком случае является поворот текста заголовка на 90 градусов. Разберем детально все способы реализации этой задачи: от использования макетов до тонкой настройки условного оформления и программных методов.
Этот метод считается классическим и наиболее гибким, так как он позволяет полностью контролировать визуальное представление шапки. Проанализируем процесс создания индивидуального дизайна для заголовка колонки.
Во-первых, перейдем на закладку «Макеты» в схеме компоновки данных. Здесь мы можем переопределить стандартный вывод любого элемента отчета. Нам необходимо добавить макет заголовка группировки или макет заголовка поля.
Выполним следующие шаги:
90 (для поворота снизу вверх) или 270 (для поворота сверху вниз).Центр.Рассмотрим важный нюанс: если мы используем макет, нам придется описать оформление для всех связанных колонок в этой секции, иначе стандартное оформление 1С может конфликтовать с пользовательским макетом. Именно об этом упоминалось в обсуждении на форуме — иногда приходится «перелопачивать» всю шапку ради нескольких колонок.
Существует более изящный способ, который не требует ручного рисования макетов. Мы можем воспользоваться механизмом условного оформления, который многие привыкли применять только к данным, но он прекрасно работает и для заголовков. Посмотрим, как это настроить правильно.
Перейдем на вкладку «Настройки», затем на вкладку «Условное оформление». Добавим новый элемент оформления:
90.В заголовке поля и В заголовке группировки. Если оставить галочку в пункте В данных, то и сами числа или строки в колонках повернутся вертикально, что нам не нужно.Этот метод позволяет избежать трудоемкой работы с макетами и сохраняет возможность использования стандартных макетов оформления (например, «Бирюзовый» или «Арктика»).
При повороте текста мы неизбежно столкнемся с проблемой: платформа 1С не всегда автоматически увеличивает высоту секции шапки, чтобы вертикальный текст поместился полностью. Проанализируем, как с этим бороться.
Если текст обрезается, у нас есть два пути. Первый — в настройках отчета на закладке «Другие настройки» найти параметр «Макет оформления» и установить его в значение Без оформления, после чего вручную задать высоту в макете. Однако это лишает нас красоты стандартных стилей.
Второй путь — программная корректировка. Выясним, как это реализовать в модуле объекта отчета. Мы можем перехватить событие вывода и принудительно установить высоту строк в итоговом табличном документе.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
// После вывода находим область шапки и корректируем её
// Например, увеличим высоту первых трех строк, если там заголовки
Для НомерСтроки = 1 По 3 Цикл
Область = ДокументРезультат.Область(НомерСтроки, , НомерСтроки, );
Область.АвтоВысотаСтроки = Истина;
// Или задаем жестко в пунктах, если АвтоВысота не сработала
// Область.ВысотаСтроки = 60;
КонецЦикла;
КонецПроцедуры
Если мы разрабатываем кросс-отчет (таблицу), где колонки формируются динамически на основе данных (например, продажи по месяцам), вертикальные заголовки становятся жизненно необходимыми. Посмотрим на дополнительные настройки группировок. Для настройки вывода периодических колонок в кросс-таблице можно использовать пример формирования шапки отчета по неделям и месяцам.
В настройках конкретной группировки колонок на вкладке «Дополнительные настройки» есть параметр «Расположение группировок». Если мы сочетаем вертикальную ориентацию текста через условное оформление и режим расположения Начало, мы получаем максимально компактную «шахматку». Для центрирования текста в таких ячейках убедитесь, что свойство «Размещать» установлено в значение Переносить, иначе при узкой колонке текст может просто исчезнуть.
Рассмотрим, как вертикальные заголовки ведут себя за пределами тонкого клиента 1С. При сохранении отчета в формат .xlsx ориентация 90 градусов обычно передается корректно, так как Excel поддерживает это свойство ячеек. Однако важно помнить:
Таким образом, мы разобрали три основных подхода. Для простых случаев идеально подходит условное оформление с ограничением области использования. Если же требуется сложная многоуровневая шапка с объединенными ячейками и специфическим дизайном — ваш выбор макеты компоновки данных.