Доброе время суток всем!

Необходимо реализовать внешний отчёт. При выборе сотрудника и указания периода рисуется собственный макет(справка о зарплате за 3 месяца)(макет приложил). Макет нарисовал с шаблонами и параметрами.

Вопрос:
Как правильно реализовать заполнение моего макета на основании заданных параметров ?!

Не смог найти нигде информации о том как программно это выводить.
Я так понял в основной системе компоновки данных берём регистр,оттуда тянем сотрудника и период для указания этих параметров.
Хотелось бы просто делать запросы и заполнять параметры, но не знаю кода Компоновки...

На данном этапе остановился только на этом:

```1c
    #Область СведенияОбОбработке
    ////////////////////////Сведения о внешней обработке/////////////////////////////////////
    Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    ПараметрыРегистрации.Вставить("Вид", "ДополнительныйОтчет");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", "Справка о зарплате");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("Информация", "Отчет 'Справка о зарплате за последние три месяца'");
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    ДобавитьКоманду(ТаблицаКоманд, "Справка о зарплате", "Справка о зарплате за последние три месяца", "ОткрытиеФормы", Ложь, ");
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    Возврат ПараметрыРегистрации;
    КонецФункции
    Функция ПолучитьТаблицуКоманд()
    Команды = Новый ТаблицаЗначений;
    Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
    Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
    Возврат Команды;
    КонецФункции
    Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = ")
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;
    КонецПроцедуры
    ////////////////////////Сведения о внешней обработке/////////////////////////////////////
    #КонецОбласти

    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    //ДокументРезультат.Очистить();

    ДокументРезультат.ТолькоПросмотр = Истина;
    ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ДокументРезультат.ПолеСправа = 0;
    ДокументРезультат.ПолеСнизу = 0;
    ДокументРезультат.ПолеСправа = 0;
    ДокументРезультат.АвтоМасштаб = Истина;

    ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗП";

    СвойМакетОформления =
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    КонецПроцедуры
```
---
Интересует вот это, правильно ли :

```1c
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ДокументРезультат.Очистить();

    ДокументРезультат.ТолькоПросмотр = Истина;
    ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ДокументРезультат.ПолеСправа = 0;
    ДокументРезультат.ПолеСнизу = 0;
    ДокументРезультат.ПолеСправа = 0;
    ДокументРезультат.АвтоМасштаб = Истина;

    ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗП";

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();

    ЗначениеПараметраПериод = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаНачала"));
    Если ДатаНачалаНП = '00010101' Тогда
    ДатаНачалаНП = Дата(ТекущаяДата());
    КонецЕсли;

    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

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

    СформироватьМакет(ДокументРезультат, ТаблицаЗначений);

    КонецПроцедуры
```
---
Обычно такие отчеты формируются программно. С помощью СКД получают исходные данные, а уже их выводят в модуле объекта
---
Получается в основной СКД достаточно этого для моих требовании ?:

```1c
    ВЫБРАТЬ
    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
    КадроваяИсторияСотрудниковСрезПоследних.Период КАК Период,
    КадроваяИсторияСотрудниковСрезПоследних.Организация КАК Организация
    ИЗ
    РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(, ) КАК КадроваяИсторияСотрудниковСрезПоследних
    ГДЕ
    КадроваяИсторияСотрудниковСрезПоследних.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
```

А уже дальше работаю с сотрудником,организацией и заполняю параметры макета ?
---
вам нужен пример как руками запускать СКД и формировать макет?
---
Да, ниже написал кусок кода который смог найти, но не уверен в его правильности. Если не сложно прокомментируйте пожалуйста.
---
могу для примера выслать отчет. Там простой код и простая СКД, думаю разберетесь.
---
Буду благодарен.
---
вложение
---
Раз уж в ЗУПе, там повально печатные формы печатаются через отчеты. Посмотри модуль и в настройки схемы компоновки любого такого типового отчета, например, тот же ПечатнаяФормаТ1.
---
Интересует вот это, правильно ли :

```1c
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ДокументРезультат.Очистить();

    ДокументРезультат.ТолькоПросмотр = Истина;
    ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ДокументРезультат.ПолеСправа = 0;
    ДокументРезультат.ПолеСнизу = 0;
    ДокументРезультат.ПолеСправа = 0;
    ДокументРезультат.АвтоМасштаб = Истина;

    ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗП";

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();

    ЗначениеПараметраПериод = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаНачала"));
    Если ДатаНачалаНП = '00010101' Тогда
    ДатаНачалаНП = Дата(ТекущаяДата());
    КонецЕсли;

    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

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

    СформироватьМакет(ДокументРезультат, ТаблицаЗначений);

    КонецПроцедуры
```
---
Да, направление мысли правильное
---
Извините, почему в отчёт выводится "СтрокаТаблицыЗначении",необходимо число и название организации:

```1c
    КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина,
    общегоНазначенияКлиентСервер.ЗначениеВМассиве(Сотрудник),
    "ДатаПриема,Организация", ТекущаяДата());

    ДанныеОрганизации.Вставить("ДатаПриема",КадровыеДанныеСотрудников[0]);
    ДанныеОрганизации.Вставить("ОрганизацияАктуальная",КадровыеДанныеСотрудников[1]);
```
---
ДанныеОрганизации.Вставить("ДатаПриема",КадровыеДанныеСотрудников[0].ДатаПриема);
            ДанныеОрганизации.Вставить("ОрганизацияАктуальная",КадровыеДанныеСотрудников[0].Организация);
---
Уже сделал так, то же самое же получается ?:

```1c
    КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина,
    общегоНазначенияКлиентСервер.ЗначениеВМассиве(Сотрудник),
    "ДатаПриема,Организация", ТекущаяДата());
    ДТ = КадровыеДанныеСотрудников[0]["ДатаПриема"];
    ДанныеОрганизации.Вставить("ДатаПриема",Формат(ДТ,"ДЛФ=DD"));
    ДанныеОрганизации.Вставить("ОрганизацияАктуальная",КадровыеДанныеСотрудников[0]["Организация"]);
```
---
```1c
    ОбластьШапка.Параметры.Заполнить(ДанныеОрганизации)
```
 Дальше так делаете? Ну и плюс, параметра ОрганизацияАктуальная в табличном документе не вижу
---
Именно
---
Весь листинг в студию, кусками не понятно
---
Очередной пример ситуации, когда обещанное вознаграждение так никому и не досталось...