Программный вывод отчета СКД и установка настроек
Вывод отчета в Таблицу значений или Дерево значений:
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
// Отключение вывода общих итогов
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ГоризонтальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Нет);
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ВертикальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Нет);
// Компоновка макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
// Инициализация процессора компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
// Дерево значений, в которую будет получен результат
Результат = Новый ДеревоЗначений;
// Получение результата
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.ОтображатьПроцентВывода = Истина;
ПроцессорВывода.УстановитьОбъект(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
// Отключение вывода общих итогов
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ГоризонтальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Нет);
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ВертикальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Нет);
// Компоновка макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
// Инициализация процессора компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
// Дерево значений, в которую будет получен результат
Результат = Новый ДеревоЗначений;
// Получение результата
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.ОтображатьПроцентВывода = Истина;
ПроцессорВывода.УстановитьОбъект(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
Вывод отчета в табличный документ:
ТабличноеПолеРезультат.Очистить();
ЭтотОбъект = РеквизитФормыВЗначение("Объект");
СхемаКомпоновкиПродажи = ЭтотОбъект.ПолучитьСхемуПродажи();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиПродажи, КомпоновщикНастроекПродаж.ПолучитьНастройки(),
,,Тип("ГенераторМакетаКомпоновкиДанных"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.ОтображатьПроцентВывода = Истина;
ПроцессорВывода.УстановитьДокумент(ТабличноеПолеРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ЭтотОбъект = РеквизитФормыВЗначение("Объект");
СхемаКомпоновкиПродажи = ЭтотОбъект.ПолучитьСхемуПродажи();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиПродажи, КомпоновщикНастроекПродаж.ПолучитьНастройки(),
,,Тип("ГенераторМакетаКомпоновкиДанных"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.ОтображатьПроцентВывода = Истина;
ПроцессорВывода.УстановитьДокумент(ТабличноеПолеРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
Функция ПолучитьСхемуПродажи() Экспорт
Возврат ПолучитьМакет("Продажи");
КонецФункции
Возврат ПолучитьМакет("Продажи");
КонецФункции
Пример установки параметров:
ПериодОтчета = Новый СтандартныйПериод;
ПериодОтчета.ДатаНачала = НачалоДня(НачалоДня(ТекущаяДата()) - (44*3600*24));
ПериодОтчета.ДатаОкончания = КонецДня(ТекущаяДата());
//устанавливаем параметры тербования выгрузки по периоду 45 дней
Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета"), ПериодОтчета);
ПериодОтчета.ДатаОкончания = КонецДня(ТекущаяДата());
//устанавливаем параметры тербования выгрузки по периоду 45 дней
Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета"), ПериодОтчета);
Пример установки пользовательской настройки:
Важно, пользовательская настройка доступна только в ПриОткрытии
ПериодОтчета = Новый СтандартныйПериод;
ПериодОтчета.ДатаНачала = НачалоДня(НачалоДня(ТекущаяДата()) - (44*3600*24));
ПериодОтчета.ДатаОкончания = КонецДня(ТекущаяДата());
ИдентификаторПользНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьИдентификаторПоОбъекту(Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета")));
ПараметрПользовНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИдентификаторПользНастройки);
Если Не ПараметрПользовНастройки = Неопределено Тогда
ПараметрПользовНастройки.Значение = ПериодОтчета;
КонецЕсли;
ПериодОтчета.ДатаНачала = НачалоДня(НачалоДня(ТекущаяДата()) - (44*3600*24));
ПериодОтчета.ДатаОкончания = КонецДня(ТекущаяДата());
ИдентификаторПользНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьИдентификаторПоОбъекту(Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета")));
ПараметрПользовНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИдентификаторПользНастройки);
Если Не ПараметрПользовНастройки = Неопределено Тогда
ПараметрПользовНастройки.Значение = ПериодОтчета;
КонецЕсли;
Еще один пример (Важно, пользовательская настройка доступна только в ПриОткрытии):
ПриОткрытии - это клиентское событие.
Лучше использовать событие таблицы связанной со списком ПриЗагрузкеПользовательскихНастроекНаСервере или ПередЗагрузкойПользовательскихНастроекНаСервере.
Нашол только такое решение и работает только вот так:
&НаСервере
Процедура СписокПриЗагрузкеПользовательскихНастроекНаСервере(Элемент, Настройки)
ПользовательскийОтбор = Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Список.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки);
ПользовательскийОтбор.Элементы.Очистить();
ЭлементОтбора = ПользовательскийОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = ТекущаяСтрокаПоиска;
ЭлементОтбора.ИдентификаторПользовательскойНастройки = ерпИдентификаторПользовательскойНастройки;
ЭлементОтбора.ПредставлениеПользовательскойНастройки = "По части наименования";
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
КонецПроцедуры
Процедура СписокПриЗагрузкеПользовательскихНастроекНаСервере(Элемент, Настройки)
ПользовательскийОтбор = Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Список.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки);
ПользовательскийОтбор.Элементы.Очистить();
ЭлементОтбора = ПользовательскийОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = ТекущаяСтрокаПоиска;
ЭлементОтбора.ИдентификаторПользовательскойНастройки = ерпИдентификаторПользовательскойНастройки;
ЭлементОтбора.ПредставлениеПользовательскойНастройки = "По части наименования";
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
КонецПроцедуры
Если пробовать очистить Настройки.ДополнительныеНастройки.Элементы.Очистить(); получим опять ошибку о связке настроек.
Пример программной подмены макетов СКД при компоновке результата, с сохранением пользовательских настроек:
Процедура УстановитьНовыйШаблонСКД(ИмяМакета)
//сохраняем значения предыдущих параметров
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ПериодОтчета = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета"));
Поставщик = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Поставщик"));
ДополнительныйРеквизит = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДополнительныйРеквизит"));
//обновляем схему и устанавливаем новые настройки
СхемаКомпоновкиДанных = ПолучитьМакет(ИмяМакета);
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
КомпоновщикНастроек.Восстановить();
//устанавливаем параметры которые были указаны пользователем
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета"), ПериодОтчета.Значение);
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Поставщик"), Поставщик.Значение);
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДополнительныйРеквизит"), ДополнительныйРеквизит.Значение);
КонецПроцедуры
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
МассивОтчетов = Новый Массив();
МассивОтчетов.Добавить(Новый Структура("ИмяОтчета, ИмяЛиста, ТаблицаВывода", "КаталогТовары", "FS_Heinz_Products", Новый ТабличныйДокумент));
МассивОтчетов.Добавить(Новый Структура("ИмяОтчета, ИмяЛиста, ТаблицаВывода", "ТРТ", "FS_Heinz_Outlets", Новый ТабличныйДокумент));
МассивОтчетов.Добавить(Новый Структура("ИмяОтчета, ИмяЛиста, ТаблицаВывода", "ПродажиОсновные", "FS_Heinz_Dispatch", Новый ТабличныйДокумент));
МассивОтчетов.Добавить(Новый Структура("ИмяОтчета, ИмяЛиста, ТаблицаВывода", "ОстаткиПоПериодам", "FS_Heinz_Stock", Новый ТабличныйДокумент));
Для Каждого ВидОтчета Из МассивОтчетов Цикл
УстановитьНовыйШаблонСКД(ВидОтчета.ИмяОтчета);
Если ОтображатьРезультатНаФорме Тогда
//вывод отчета на форму
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанных"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.ОтображатьПроцентВывода = Истина;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
КонецЕсли;
//обработка вывода в служебные таблицы
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
// Отключение вывода заголовка, параметров и отборов
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ВыводитьЗаголовок", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ВыводитьПараметрыДанных", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ВыводитьОтбор", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
// Отключение вывода общих итогов
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ГоризонтальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Нет);
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ВертикальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Нет);
//вывод отчета в Таблицу вывода
Если ВидОтчета.ИмяОтчета = "ОстаткиПоПериодам" Тогда
// Компоновка макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
// Инициализация процессора компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
// Дерево значений, в которую будет получен результат
Результат = Новый ДеревоЗначений;
// Получение результата
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.ОтображатьПроцентВывода = Истина;
ПроцессорВывода.УстановитьОбъект(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ТаблицаВывода = ВидОтчета.ТаблицаВывода;
ТаблицаВывода.Область("R1C1").Текст = "Дата";
ТаблицаВывода.Область("R1C2").Текст = "Фирма";
ТаблицаВывода.Область("R1C3").Текст = "Артикул товара";
ТаблицаВывода.Область("R1C4").Текст = "Код склада";
ТаблицаВывода.Область("R1C5").Текст = "Кол.";
ТаблицаВывода.Область("R1C1").ШиринаКолонки = 12;
ТаблицаВывода.Область("R1C2").ШиринаКолонки = 12;
ТаблицаВывода.Область("R1C3").ШиринаКолонки = 14;
ТаблицаВывода.Область("R1C4").ШиринаКолонки = 17;
ТаблицаВывода.Область("R1C5").ШиринаКолонки = 12;
СчетчикСтроки = 1;
Для Каждого СтрокиГруппировкиПериоды Из Результат.Строки Цикл //->группировка ""
Для Каждого СтрокиДетали Из СтрокиГруппировкиПериоды.Строки Цикл
СчетчикСтроки = СчетчикСтроки + 1;
ТаблицаВывода.Область("R"+Формат(СчетчикСтроки, "ЧГ=")+"C1").Текст = Формат(СтрокиГруппировкиПериоды.Дата, "ДФ=dd.MM.yyyy");
ТаблицаВывода.Область("R"+Формат(СчетчикСтроки, "ЧГ=")+"C2").Текст = СтрокиДетали.Фирма;
ТаблицаВывода.Область("R"+Формат(СчетчикСтроки, "ЧГ=")+"C3").Текст = СтрокиДетали.Код;
ТаблицаВывода.Область("R"+Формат(СчетчикСтроки, "ЧГ=")+"C4").Текст = СтрокиДетали.КодСклада;
ТаблицаВывода.Область("R"+Формат(СчетчикСтроки, "ЧГ=")+"C5").Текст = СтрокиДетали.ВНаличииКонечныйОстаток;
КонецЦикла;
КонецЦикла; //<- data-blogger-escaped-br="">
Иначе
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанных"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.ОтображатьПроцентВывода = Истина;
ПроцессорВывода.УстановитьДокумент(ВидОтчета.ТаблицаВывода);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
КонецЕсли;
КонецЦикла;
АдресХранилища = ПоместитьВоВременноеХранилище(МассивОтчетов); //поместить результат для обработки на клиенте
МассивОтчетов = Неопределено; //разрушим объект
КонецПроцедуры
//сохраняем значения предыдущих параметров
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ПериодОтчета = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета"));
Поставщик = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Поставщик"));
ДополнительныйРеквизит = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДополнительныйРеквизит"));
//обновляем схему и устанавливаем новые настройки
СхемаКомпоновкиДанных = ПолучитьМакет(ИмяМакета);
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
КомпоновщикНастроек.Восстановить();
//устанавливаем параметры которые были указаны пользователем
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета"), ПериодОтчета.Значение);
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Поставщик"), Поставщик.Значение);
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДополнительныйРеквизит"), ДополнительныйРеквизит.Значение);
КонецПроцедуры
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
МассивОтчетов = Новый Массив();
МассивОтчетов.Добавить(Новый Структура("ИмяОтчета, ИмяЛиста, ТаблицаВывода", "КаталогТовары", "FS_Heinz_Products", Новый ТабличныйДокумент));
МассивОтчетов.Добавить(Новый Структура("ИмяОтчета, ИмяЛиста, ТаблицаВывода", "ТРТ", "FS_Heinz_Outlets", Новый ТабличныйДокумент));
МассивОтчетов.Добавить(Новый Структура("ИмяОтчета, ИмяЛиста, ТаблицаВывода", "ПродажиОсновные", "FS_Heinz_Dispatch", Новый ТабличныйДокумент));
МассивОтчетов.Добавить(Новый Структура("ИмяОтчета, ИмяЛиста, ТаблицаВывода", "ОстаткиПоПериодам", "FS_Heinz_Stock", Новый ТабличныйДокумент));
Для Каждого ВидОтчета Из МассивОтчетов Цикл
УстановитьНовыйШаблонСКД(ВидОтчета.ИмяОтчета);
Если ОтображатьРезультатНаФорме Тогда
//вывод отчета на форму
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанных"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.ОтображатьПроцентВывода = Истина;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
КонецЕсли;
//обработка вывода в служебные таблицы
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
// Отключение вывода заголовка, параметров и отборов
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ВыводитьЗаголовок", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ВыводитьПараметрыДанных", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ВыводитьОтбор", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
// Отключение вывода общих итогов
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ГоризонтальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Нет);
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ВертикальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Нет);
//вывод отчета в Таблицу вывода
Если ВидОтчета.ИмяОтчета = "ОстаткиПоПериодам" Тогда
// Компоновка макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
// Инициализация процессора компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
// Дерево значений, в которую будет получен результат
Результат = Новый ДеревоЗначений;
// Получение результата
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.ОтображатьПроцентВывода = Истина;
ПроцессорВывода.УстановитьОбъект(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ТаблицаВывода = ВидОтчета.ТаблицаВывода;
ТаблицаВывода.Область("R1C1").Текст = "Дата";
ТаблицаВывода.Область("R1C2").Текст = "Фирма";
ТаблицаВывода.Область("R1C3").Текст = "Артикул товара";
ТаблицаВывода.Область("R1C4").Текст = "Код склада";
ТаблицаВывода.Область("R1C5").Текст = "Кол.";
ТаблицаВывода.Область("R1C1").ШиринаКолонки = 12;
ТаблицаВывода.Область("R1C2").ШиринаКолонки = 12;
ТаблицаВывода.Область("R1C3").ШиринаКолонки = 14;
ТаблицаВывода.Область("R1C4").ШиринаКолонки = 17;
ТаблицаВывода.Область("R1C5").ШиринаКолонки = 12;
СчетчикСтроки = 1;
Для Каждого СтрокиГруппировкиПериоды Из Результат.Строки Цикл //->группировка ""
Для Каждого СтрокиДетали Из СтрокиГруппировкиПериоды.Строки Цикл
СчетчикСтроки = СчетчикСтроки + 1;
ТаблицаВывода.Область("R"+Формат(СчетчикСтроки, "ЧГ=")+"C1").Текст = Формат(СтрокиГруппировкиПериоды.Дата, "ДФ=dd.MM.yyyy");
ТаблицаВывода.Область("R"+Формат(СчетчикСтроки, "ЧГ=")+"C2").Текст = СтрокиДетали.Фирма;
ТаблицаВывода.Область("R"+Формат(СчетчикСтроки, "ЧГ=")+"C3").Текст = СтрокиДетали.Код;
ТаблицаВывода.Область("R"+Формат(СчетчикСтроки, "ЧГ=")+"C4").Текст = СтрокиДетали.КодСклада;
ТаблицаВывода.Область("R"+Формат(СчетчикСтроки, "ЧГ=")+"C5").Текст = СтрокиДетали.ВНаличииКонечныйОстаток;
КонецЦикла;
КонецЦикла; //<- data-blogger-escaped-br="">
Иначе
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанных"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.ОтображатьПроцентВывода = Истина;
ПроцессорВывода.УстановитьДокумент(ВидОтчета.ТаблицаВывода);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
КонецЕсли;
КонецЦикла;
АдресХранилища = ПоместитьВоВременноеХранилище(МассивОтчетов); //поместить результат для обработки на клиенте
МассивОтчетов = Неопределено; //разрушим объект
КонецПроцедуры
Комментариев нет:
Отправить комментарий