Нумерация колонок таблицы (при формировании через СКД)

При формировании таблицы через СКД бывает необходимо пронумеровать колонки. Привожу один из возможных вариантов решения.

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

  • организовал программный вывод отчета (т.к. первоначально планировалось, что СКД все будет делать сама);
  • "допилил" сформированный в ТабличныйДокумент отчет, заменив первые несколько строк на нужный мне макет шапки (благо СКД "фиксирует" шапку отчета сама, что позволяет определить ее высоту);

Процедура Сформировать(Результат = Неопределено, ДанныеРасшифровки = Неопределено, ВыводВФормуОтчета = Истина) Экспорт

Результат.Очистить();

ТабДокДанныеОтчета = Новый ТабличныйДокумент;

ЭтотОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки());

// Сгенерируем макет компоновки данных при помощи компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных, ЭтотОбъект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
//Создадим и инициализируем процессор компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

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

// Выводим свою шапку таблицы
ШапкаТаблицы = ЭтотОбъект.ПолучитьМакет("ШапкаТаблицы");
Результат.Вывести(Шапкатаблицы);

// Выводим данные отчета
ОблШапкаСКД = ТабДокДанныеОтчета.Область("R1:R" + ТабДокДанныеОтчета.ФиксацияСверху);
ТабДокДанныеОтчета.УдалитьОбласть(ОблШапкаСКД, ТипСмещенияТабличногоДокумента.ПоВертикали);
Результат.Вывести(ТабДокДанныеОтчета);
Результат.ФиксацияСверху = 2;

КонецПроцедуры

Так же на скрине отмечена область "Группировок СКД", выведенная на форму отчета. Чтобы не париться с организацией различный вариантов отчета, предлагаю делать сразу несколько веток в одном варианте. При этом для "включения" нужного варианта необходимо всего лишь "включить" головной узел нужной ветки и выключить все остальные головные узлы. При этом, даже если высота шапки будет изменяться, мы сможем вставить нужный нам макет шапки с нумерацией.

6 Comments

  1. Hany

    А почему не нарисовать макет самому вручную и не подменять программно шапку вообще? 😉

    Reply
  2. Поручик

    (1) Насколько это будет универсально?

    Reply
  3. Hany

    (2)

    Достаточно универсально.

    В макете можно переопределить формат вывода всего макета, который создается СКД автоматически.

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

    Reply
  4. TorLink

    Хм, проблемка нарисовалась, границы колонок то съезжают, что-то не допру пока как это поправить(

    http://clip2net.com/s/5M6WAe

    Сделал как в 1м посте, программно конечно интереснее, но как их сопоставить не понятно.

    Reply
  5. echo77

    (0) Вариант конечно, но не самый лучший 🙂

    Выкладывать картинку за 1$m — это интересно, надо попробовать 🙂

    Reply
  6. Lars Ulrich

    (5) Видимо при изменениях сайта старая публикация конвертировалась в такую вот подставу 🙂

    Тут вообще никаких вложений не может быть, т.к. весь сабж описан в тексте+скрины.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *