Как в шапке отчета СКД вывести название колонки вертикально

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

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

Способ 1. Использование макета заголовка группировки

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

Во-первых, перейдем на закладку «Макеты» в схеме компоновки данных. Здесь мы можем переопределить стандартный вывод любого элемента отчета. Нам необходимо добавить макет заголовка группировки или макет заголовка поля.

Выполним следующие шаги:

  1. Нажмем кнопку «Добавить макет» и выберем пункт «Добавить макет заголовка поля».
  2. Укажем имя поля, для которого мы хотим изменить ориентацию заголовка.
  3. В области редактирования табличного документа, которая появится справа, выделим ячейку.
  4. Откроем свойства этой ячейки (F4) и найдем параметр «Ориентация текста». Установим значение 90 (для поворота снизу вверх) или 270 (для поворота сверху вниз).
  5. Чтобы текст смотрелся гармонично, в параметрах «Горизонтальное положение» и «Вертикальное положение» установим значение Центр.

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

Способ 2. Условное оформление — самый быстрый метод

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

Перейдем на вкладку «Настройки», затем на вкладку «Условное оформление». Добавим новый элемент оформления:

  1. В поле «Оформление» найдем параметр «Ориентация текста» и установим значение 90.
  2. В списке «Оформляемые поля» выберем те колонки, заголовки которых должны стать вертикальными.
  3. Критически важный шаг: перейдем на вкладку «Область использования». По умолчанию оформление применяется везде. Нам нужно снять все галочки, кроме В заголовке поля и В заголовке группировки. Если оставить галочку в пункте В данных, то и сами числа или строки в колонках повернутся вертикально, что нам не нужно.

Этот метод позволяет избежать трудоемкой работы с макетами и сохраняет возможность использования стандартных макетов оформления (например, «Бирюзовый» или «Арктика»).

Способ 3. Решение проблемы высоты строк

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

Если текст обрезается, у нас есть два пути. Первый — в настройках отчета на закладке «Другие настройки» найти параметр «Макет оформления» и установить его в значение Без оформления, после чего вручную задать высоту в макете. Однако это лишает нас красоты стандартных стилей.

Второй путь — программная корректировка. Выясним, как это реализовать в модуле объекта отчета. Мы можем перехватить событие вывода и принудительно установить высоту строк в итоговом табличном документе.


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
	// После вывода находим область шапки и корректируем её
	// Например, увеличим высоту первых трех строк, если там заголовки
	Для НомерСтроки = 1 По 3 Цикл
		Область = ДокументРезультат.Область(НомерСтроки, , НомерСтроки, );
		Область.АвтоВысотаСтроки = Истина;
		// Или задаем жестко в пунктах, если АвтоВысота не сработала
		// Область.ВысотаСтроки = 60; 
	КонецЦикла;
	
КонецПроцедуры

Особенности работы в кросс-таблицах

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

В настройках конкретной группировки колонок на вкладке «Дополнительные настройки» есть параметр «Расположение группировок». Если мы сочетаем вертикальную ориентацию текста через условное оформление и режим расположения Начало, мы получаем максимально компактную «шахматку». Для центрирования текста в таких ячейках убедитесь, что свойство «Размещать» установлено в значение Переносить, иначе при узкой колонке текст может просто исчезнуть.

Экспорт в Excel и веб-клиент

Рассмотрим, как вертикальные заголовки ведут себя за пределами тонкого клиента 1С. При сохранении отчета в формат .xlsx ориентация 90 градусов обычно передается корректно, так как Excel поддерживает это свойство ячеек. Однако важно помнить:

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

← На главную