Отчет по данным СКД (система компоновки данных).

 

   Отчет на СКД с расшифровкой с заполнением из таблицы значений, формируемой отдельно в модуле объекта запросами (и последующей их обработкой) к внешним источникам. 

   Вывод данных в СКД осуществляется следующим образом:

    ОбъектОтчетНаСервере = РеквизитФормыВЗначение("Отчет");
    СхемаСКД = ОбъектОтчетНаСервере.ПолучитьМакет("Макет");
    
    тзРезультат = неопределено; 
    если не ОбъектОтчетНаСервере.ВыполнитьОбработкуНаСервере(тзРезультат) тогда  
        возврат;
    конецесли;        
    если тзРезультат = неопределено тогда
        записьжурналарегистрации("### НАШ ОТЧЕТ",УровеньЖурналаРегистрации.Ошибка,,,"НАШЕ СООБЩЕНИЕ ОБ ОШИБКЕ");
        возврат;
    конецесли; 
        
    НастройкиСхемыОСКД = СхемаСКД.НастройкиПоУмолчанию;
    КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных;
    ДанныеРасшифровки = новый ДанныеРасшифровкиКомпоновкиДанных;
    Макет = КомпоновщикМакетаОСКД.Выполнить(СхемаСКД, НастройкиСхемыОСКД,ДанныеРасшифровки);
    
    ВнешнийНаборДанных = Новый Структура("тз", тзРезультат);
    ПроцессорКомпоновкиОСКД = Новый ПроцессорКомпоновкиДанных; 
    ПроцессорКомпоновкиОСКД.Инициализировать(Макет, ВнешнийНаборДанных);
    ТаблДок.Очистить();
    ПроцессорВыводаОСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВыводаОСКД.УстановитьДокумент(ТаблДок);
    ПроцессорВыводаОСКД.Вывести(ПроцессорКомпоновкиОСКД); 
    адрес = поместитьвовременноехранилище(ДанныеРасшифровки,ЭтаФорма.УникальныйИдентификатор);
    отчет.адрес = адрес;
    
   Где ТаблДок это реквизит формы с типом табличный документ.    

   И в модуле объекта

функция ВыполнитьОбработкуНаСервере(результат) экспорт 
     
    результат = ПолучитьДанные(); 
    если результат = неопределено тогда      
        записьжурналарегистрации("### Сверка возвратов",УровеньЖурналаРегистрации.Ошибка,,,"данные не получены"); 
        возврат ложь; 
    конецесли;            
                           
    возврат истина; 
     
Конецфункции 

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

 

 

   При заполнении полей набора данных не забываем указать тип по возможности.

 

 

   Для вывода данных можно использовать группировки (для разнесения по строкам и колонкам).
Для этого на странице "Настройки" при добавлении выбранных полей добавляем группировки, указываем их расположение. Учитываем, что одноименные группировки отражаются некорректно без разнесения их по разным группировкам уровнем выше. 
   Т.е. если требуется указать для нескольких видов документов отображаемым в разных колонках отдельно дату и время для каждого, то для этих нескольких видов надо создать группировки для каждого (хотя бы с названием вида документа). Можно не указывать наименования группировки, но любое наименование группировки в т.ч. пустое должно быть только одно в своем уровне. 

 

 

Также можно добавить условное оформление: