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