Передача менеджера временных таблиц в СКД



Для того, чтобы компоновщик настроек мог понять, с каким типами данных из временной таблицы он имеет дело, желательно прописать это в тексте запроса, используя выражения языка запросов ВЫРАЗИТЬ(ВТ.ЗначениеПоля КАК <Описание типа>) или ЕСТЬNULL(ВТ.ЗначениеПоля, <Пустое значение такого же типа>). Для составных типов можно будет использовать выражение ВЫБОР КОГДА с последовательным описанием типов.





ВЫБОР КОГДА Ложь Тогда ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)

КОГДА Ложь ТОГДА ЗНАЧЕНИЕ(Справочник.МестаХранения.ПустаяСсылка)

ИНАЧЕ вт.пп





ВЫБРАТЬ РАЗРЕШЕННЫЕ

Начисления.Сотрудник КАК Сотрудник,

Начисления.НачислениеУдержание КАК ВидРасчета,

Начисления.Сумма КАК Сумма,

ЕСТЬNULL(КадровыеДанные.Подразделение, ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)) КАК Подразделение,

ЕСТЬNULL(КадровыеДанные.Должность, ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка)) КАК Должность,

ЕСТЬNULL(КадровыеДанные.ГрафикРаботы, ЗНАЧЕНИЕ(Справочник.ГрафикиРаботы.ПустаяСсылка)) КАК ГрафикРаботы,

ЕСТЬNULL(КадровыеДанные.ВидЗанятости, ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка)) КАК ВидЗанятости

ИЗ

РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК Начисления

ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудников КАК КадровыеДанные

ПО Начисления.Сотрудник = КадровыеДанные.Сотрудник

И Начисления.Период = КадровыеДанные.Период

ГДЕ

Начисления.Период = &МесяцНачисления






Затем в предопределенной процедуре ПриКомпоновкеРезультата модуля отчета, инициализируем менеджер временных таблиц с требуемыми данными. В результате инициализации в МВТ должа быть сформирована временная таблица с именем, идентичным объявленному в наборе данных.





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



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

МесяцНачисления = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра("МесяцНачисления").Значение;



// Создаем МВТ

МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;



// Здесь наполняем МВТ данными

КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина,, "Подразделение, Должность, ГрафикРаботы, ВидЗанятости", МесяцНачисления);

ЗарплатаКадры.СоздатьВТПоТаблицеЗначений(МенеджерВременныхТаблиц, КадровыеДанные, "ВТКадровыеДанныеСотрудников", Истина);



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

МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки,, Тип("ГенераторМакетаКомпоновкиДанных"));



// Здесь его используем

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;

ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,, ДанныеРасшифровки, Истина,, МенеджерВременныхТаблиц);



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

ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);



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





✍️ @odin1C_rus