---
title: Программное формирование отчета на СКД
slug: примеры-сниппеты-общее-скд/программное-формирование-отчета-на-скд
---

В модуле объекта в общем виде прописывается:

```bsl
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
   
    // 0. Отказ от стандартной обработки
    СтандартнаяОбработка = Ложь;
    
    //1. Получение схемы компоновки данных
    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    //2. Получение настроек компоновки данных
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    
    //3. Формирование макета компоновки данных на основании схемы и настроек
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
    
    //4. Выполнение компоновки данных
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    
    //4.1. Добавление внешнего набора данных.
    // Имена колонок должны соответствовать именам полей в наборе данных
    ТЗДанные = Новый ТаблицаЗначений();
    
    ВнешниеНаборыДанных = Новый Структура;
    // Ключ структуры должен быть равен значению поля "Имя объекта, содержащего данные" на вкладке "Наборы данных" конструктора СКД
    ВнешниеНаборыДанных.Вставить("ВнешнийНаборДанных1", ТЗДанные);
    
    ПроцессорКомпоновкиДанных.инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
    
    //5. Вывод результата компоновки данных в табличный документ
    ДокументРезультат.Очистить();
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

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