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