Заполнение набора данных вручную
Пример отчета
Метод нужен когда набор необходимо предварительно обработать программно перед выводом пользователю,
схема компоновки помогает пользователю наложить отборы в привычном режиме.
- Готовим набор данных, параметры по которым будет отбор должны иметь правильный тип
Выбрать
"" КАК Месяц,
"" КАК АмортПермия,
Значение(Справочник.ОсновныеСредства) КАК ОС,
0 Как СуммаБУ,
0 КАК СуммаНУ
- Дорабатываем модуль отчета
СтандартнаяОбработка = Ложь;
Менеджер = Новый МенеджерВременныхТаблиц; // здесь будет наша вр с именем набора данных, по которой система будет строить отчет
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
Параметры.Вставить("НачалоПериода", Неопределено);
Параметры.Вставить("КонецПериода", Неопределено);
Для Каждого Эл Из НастройкиОтчета.ПараметрыДанных.Элементы Цикл
Если Строка(Эл.Параметр) = "Период" Тогда
Параметры.НачалоПериода = Эл.Значение.ДатаНачала;
Параметры.КонецПериода = Эл.Значение.ДатаОкончания;
КонецЕсли;
КонецЦикла;
// реализация отбора, пример кода отбора по номенклатуре как в списке так и одиночное значение
Для Каждого Эл Из НастройкиОтчета.Отбор.Элементы Цикл
Если Строка(Эл.ЛевоеЗначение) = "Номенклатура" Тогда
Если Эл.Использование Тогда
Если ТипЗнч(Эл.ПравоеЗначение) = Тип("СписокЗначений") Тогда
Параметры.ОтборНоменклатураМассив = ?(Эл.ПравоеЗначение.Количество() >0,Эл.ПравоеЗначение,Неопределено);
ИначеЕсли ТипЗнч(Эл.ПравоеЗначение) = Тип("СправочникСсылка.Номенклатура") Тогда
МассивОтбор = Новый Массив;
МассивОтбор.Добавить(Эл.ПравоеЗначение);
Параметры.ОтборНоменклатураМассив = ?(Эл.ПравоеЗначение <> Справочники.Номенклатура.ПустаяСсылка(),МассивОтбор,Неопределено);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
//
// Установим тексты запросов наборов данных:
//
НаборыДанных = СхемаКомпоновкиДанных.НаборыДанных; // НаборДанныхОбъединениеСхемыКомпоновкиДанных
// Основной набор
НаборыДанных.ОсновнойНабор.Запрос = ВернутьТекстЗапросаОсновногоНабора();
// Склады
НаборыДанных.Склады.Запрос = ВернутьТекстЗапросаНаборСклады(); // переопределим запрос набора данных с указанием временной таблицы
//
//
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки,, Тип("ГенераторМакетаКомпоновкиДанных"));
// Здесь его используем
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,, ДанныеРасшифровки, Истина,, Менеджер);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);