1. Использование Набора данных и загрузка в него Таблицы значений.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Номенклатура
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Сообщить("Данных нет!");
Возврат;
КонецЕсли;
ТЗ = Результат.Выгрузить();
НаборДанных = Новый Структура();
НаборДанных.Вставить("Таблица", ТЗ);
НастройкиСКД = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД, ДанныеРасшифровки);
ПроцессорКомпоновкиСКД = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиСКД.Инициализировать(Макет,НаборДанных, ДанныеРасшифровки);
ДокументРезультат.Очистить();
ПроцессорВыводаСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВыводаСКД.УстановитьДокумент(ДокументРезультат);
ПроцессорВыводаСКД.Вывести(ПроцессорКомпоновкиСКД);
КонецПроцедуры
Чтобы корректно отображались настройки отчета делаем следующее:
2. Пробежаться по сформированному Табличному документу. Получить ссылки на документ и отправить их на печать.
Для примера: В первом столбце сформированного отчета находятся документы заказы покупателя.
&НаКлиенте
Процедура ПакетнаяПечать(Команда)
ВысотаТаблицы1 = ОтчетТабличныйДокумент.ВысотаТаблицы;
ШиринаТаблицы1 = ОтчетТабличныйДокумент.ШиринаТаблицы;
Массивобъектов = ПолучитьДокументы(ВысотаТаблицы1);
Если Массивобъектов.Количество() > 1 Тогда
Для Каждого Массив1 Из МассивОбъектов Цикл
УправлениеПечатьюКлиент.ВыполнитьКомандуПечатиНаПринтер(
"Документ.ЗаказПокупателя",
"ПФ_MXL_Заказ",
Массив1,
);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьДокументы(ВысотаТаблицы1)
Массивобъектов = Новый Массив;
Для Ном = 5 По ВысотаТаблицы1 Цикл
ПолеКомпоновки = ОтчетТабличныйДокумент.Область("R"+СтрЗаменить(Ном," ","")+"C1");
ОтчетДанныеРасшифровки1 = ПолучитьИзВременногоХранилища(ОтчетДанныеРасшифровки);
Если ПолеКомпоновки.Расшифровка <> Неопределено И ТипЗнч(ОтчетДанныеРасшифровки1.Элементы[ПолеКомпоновки.Расшифровка].ПолучитьПоля()[0].Значение) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
Док = ОтчетДанныеРасшифровки1.Элементы[ПолеКомпоновки.Расшифровка].ПолучитьПоля()[0].Значение;
Если ЗначениеЗаполнено(Док) И Док.Проведен Тогда
Массив1 = Новый Массив;
Массив1.Добавить(Док);
Массивобъектов.Добавить(Массив1);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Массивобъектов;
КонецФункции
3. Установить параметры в модуле отчета
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Номенклатура"));
Если Параметр <> Неопределено Тогда
Параметр.Значение = Справочники.Номенклатура.НайтиПоКоду("012354");
Параметр.Использование = Истина;
КонецЕсли;
КонецПроцедуры
4. Заголовок в отчете СКД
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
ЗначениеЗаголовка = КомпоновщикНастроек.Настройки.ПараметрыВывода.
НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Заголовок"));
ДатаДок = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Получить(0).Значение.Дата;
ДатаДок = Формат(ДатаДок, "ДФ=dd.MM.yyyy");
ЗначениеЗаголовка.Значение="Остатки товаров на "+ДатаДок;
ЗначениеЗаголовка.Использование = Истина;
КонецПроцедуры