Здравствуйте. Пытаюсь получить ТЗ из СКД, с другого самописного отчета, но ничего не выходит!
Что заметил устанавливаю Начало и Конец периода и когда проверяю в отладчике значения, то там дата не такая какая должна быть, допустим дату присваиваю начало и конец 2021 года, а у меня показывает 2022!

```1c
    ОтчетСтатичтики = Отчеты.СтатистикаПерсонала.ПолучитьМакет("СхемаКомпоновкиДанныхКадры");

    КомпоновщикНастроекНатроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроекНатроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ОтчетСтатичтики));
    КомпоновщикНастроекНатроек.ПолучитьНастройки();
    ПараметрНачалоПериод = КомпоновщикНастроекНатроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
    ПараметрНачалоПериод.Использование = Истина;
    ПараметрНачалоПериод.Значение = ДатаНачала;
    КонецНачалоПериод = КомпоновщикНастроекНатроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода");
    КонецНачалоПериод.Использование = Истина;
    КонецНачалоПериод.Значение = ДатаОкончания;
    //КомпоновщикНастроекНатроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", ДатаНачала);
    //КомпоновщикНастроекНатроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", ДатаОкончания);

    //ПолеОтбора = Новый ПолеКомпоновкиДанных("Сотрудник");
    //ЭлементОтбора = КомпоновщикНастроекНатроек.Настройки.Отбор.Элементы;
    //Для Каждого Эле Из ЭлементОтбора Цикл
    // Если Эле.ЛевоеЗначение = ПолеОтбора Тогда
    // Отбор = Эле;
    // Прервать;
    // КонецЕсли;
    //КонецЦикла;
    //
    //Если Отбор = Неопределено Тогда
    // Отбор = КомпоновщикНастроекНатроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    // Отбор.ЛевоеЗначение = ПолеОтбора;
    //КонецЕсли;
    //
    //Отбор.Использование = Истина;
    //МассивСотрудников = КопияТЗДляР1.ВыгрузитьКолонку("Сотрудник");
    //Отбор.ПравоеЗначение = МассивСотрудников;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(ОтчетСтатичтики, КомпоновщикНастроекНатроек.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,,,Истина);
    ДанныеТЗССЧР = Новый ТаблицаЗначений;
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(ДанныеТЗССЧР);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
```
---
КомпоновщикНастроекНатроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроекНатроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ОтчетСтатичтики));
 КомпоновщикНастроекНатроек.ПолучитьНастройки();
Вместо ПолучитьНастройки необходимо загрузить настройки:

```1c
    КомпоновщикНастроекНатроек.ЗагрузитьНастройки(ОтчетСтатичтики.НастройкиПоУмолчанию);
```
---
похожее разбирали:
https://forum.infostart.ru/forum9/topic279517/
---
сразу после получения схемы СКД.

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

```1c
    КомпоновщикНастроекНатроек.ЗагрузитьНастройки(ОтчетСтатичтики.НастройкиПоУмолчанию);
```
---
Здравствуйте. Исправил, с датой разобрался, но отчет не формируется ТЗ пустая!
---
это ведь отчет из ЗУП? Там все сложнее. Идет программная обработка полей представлений с переделыванием набора данных. Смотрите в модуле объекта самого отчета.
---
Да из ЗУП! Т.е. таким образом не выйдет?
---
похожее разбирали:
https://forum.infostart.ru/forum9/topic279517/
---
А перед выполнением компоновщика это где? Я обучаюсь и программное формирование СКД для меня пока не до конца ясно!
---
сразу после получения схемы СКД.

```1c
    ОтчетСтатичтики = Отчеты.СтатистикаПерсонала.ПолучитьМакет("СхемаКомпоновкиДанныхКадры");
    ЗарплатаКадрыОбщиеНаборыДанных.ЗаменитьПредставленияЗапросов(ОтчетСтатичтики.НаборыДанных,
    ОтчетСтатичтики);
```
---
Ну да, так и сделал!
---
Это сработало, только теперь нужно настроить параметры и отбор по сотруднику! А без отборов и параметров, данные удалось вывести!
---
```1c
    ДатаНачала = НачалоГода(Отчет.ДатаОтчета);
    ДатаОкончания = КонецГода(Отчет.ДатаОтчета);
    ОтчетСтатичтики = Отчеты.СтатистикаПерсонала.ПолучитьМакет("СхемаКомпоновкиДанныхКадры");
    ЗарплатаКадрыОбщиеНаборыДанных.ЗаменитьПредставленияЗапросов(ОтчетСтатичтики.НаборыДанных,ОтчетСтатичтики);
    //ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ОтчетСтатичтики);
    Настройки = ОтчетСтатичтики.ВариантыНастроек.Найти("ЧисленностьИТекучестьЗаПериод").Настройки;

    КомпоновщикНастроекНатроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроекНатроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ОтчетСтатичтики));
    КомпоновщикНастроекНатроек.ЗагрузитьНастройки(Настройки);
    НастройкиКомпоновщика = КомпоновщикНастроекНатроек.Настройки;
    ПараметрыНастройки = НастройкиКомпоновщика.ПараметрыДанных;

    ПНПериода = ПараметрыНастройки.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета"));
    ПНПериода.Значение = Отчет.ДатаОтчета;
    ПНПериода.Использование = Истина;
    //
    ПолеОтбора = Новый ПолеКомпоновкиДанных("Сотрудник");
    ЭлементОтбора = Настройки.Отбор.Элементы;
    Для Каждого Эле Из ЭлементОтбора Цикл
    Если Эле.ЛевоеЗначение = ПолеОтбора Тогда
    Отбор = Эле;
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если Отбор = Неопределено Тогда
    Отбор = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Отбор.ЛевоеЗначение = ПолеОтбора;
    КонецЕсли;

    Отбор.Использование = Истина;
    МассивСотрудников = КопияТЗДляР1.ВыгрузитьКолонку("Сотрудник");
    Отбор.ПравоеЗначение = МассивСотрудников;

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

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

Странно, а заполняю дату, уже пустой результат, что может быть?
---
ПНПериода = ПараметрыНастройки.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета"));
ПНПериода.Значение = Отчет.ДатаОтчета;
ПНПериода.Использование = Истина;
А ПериодОтчета и Отчет.ДатаОтчета имеют одинаковый тип и он тип Дата, а не СтандартныйПериод в ПериодОтчета?
---
Это Стандартный период, но в настройках СКД установлено значение "С начала этого года", где при любой период приобретает значение от начала и до конца года! А если я просто заполняю Начало и Конец, то у меня всегда 2022 год!
---
```1c
    СтПериод = Новый СтандартныйПериод(ДатаНачала, ДатаОкончания);
    ПНПериода = ПараметрыНастройки.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета"));
    ПНПериода.Значение = СтПериод;
    ПНПериода.Использование = Истина;
```
---
Блин ну теперь буду знать, спасибо! Век живи, век учись!
---
Получилось, сейчас еще попробую отбор применить по сотрудникам! Спасибо!
---
Кстати я выбрал вариант отчета и оказывается уже период не канает, точнее если я делаю так как выше, то период заполняется, а вот дата начала и конца 01010001000000. Но также если я заполняю дату начала и конца, то у меня они почему-то заполняют 2022 год! Хотя я им присвоил значение, сейчас попробую и период сбить, т.е. заполнить 3 параметра! Или как можно заполнить периодОтчета (Стандартныйпериод)?
---
я вставил обработчик сразу после определения схемы (после этого ОтчетСтатичтики = Отчеты.СтатистикаПерсонала.ПолучитьМакет("СхемаКомпоновкиДанныхКадры");)
---
ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ОтчетСтатичтики);
---
Здравствуйте. Это туда же?
---
Это вместо) Посмотрите как сделано в том же отчете СтатистикаПерсонала, модуль объекта, процедура ИнициализироватьОтчет(). Там как раз вызывается эта процедура для замены текста запроса.
---
Ок, спасибо попробую!
---
С датой разобрался, оказывается в настройке параметра СКД было значение в параметре ПериодОтчета Ч начала этого года!! Теперь данный периода правильные, но ТЗ не заполняется!