"Управление производственным предприятием для Украины", редакция 1.3 (1.3.53.1)
Доброго времени! Есть некий отчет по взвешиванию продукции при ручном формировании с заданными параметрами все хорошо формирует
есть задача формировать отчет программно, собственно функция формирования отчета:
необходимо зарегистрироваться для просмотра ссылки
Функция СформироватьОтчетПрограммно(Склад)
Таб = Новый ТабличныйДокумент;
ТекОтчет = Отчеты.Отчет_РегистрацияВзвешиваний.Создать();
СКД = ТекОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = СКД.НастройкиПоУмолчанию;
НачДата = НачалоДня(ТекущаяДата()) - 1;
НачДата = Дата(Год(НачДата),Месяц(НачДата),День(НачДата),20,0,0);
НачальнаяДата = СКД.Параметры.Найти("НачалоПериода");
Если НачальнаяДата = Неопределено Тогда
ПараметрПериод = СКД.Параметры.Добавить();
ПараметрПериод.Имя = "НачалоПериода";
ПараметрПериод.Заголовок = "НачалоПериода";
ПараметрПериод.ТипЗначения = Новый ОписаниеТипов("Дата");
ПараметрПериод.ОграничениеИспользования = Ложь;
ПараметрПериод.Значение = НачДата;
ПараметрПериод.Использование =ИспользованиеПараметраКомпоновкиданных.Всегда;
ПараметрПериод.ВключатьВДоступныеПоля = Истина;
НачальнаяДата = ПараметрПериод;
КонецЕсли;
КонечнаяДата = СКД.Параметры.Найти("КонецПериода");
Если КонечнаяДата = Неопределено Тогда
ПараметрПериод = СКД.Параметры.Добавить();
ПараметрПериод.Имя = "КонецПериода";
ПараметрПериод.Заголовок = "КонецПериода";
ПараметрПериод.ТипЗначения = Новый ОписаниеТипов("Дата");
ПараметрПериод.ОграничениеИспользования = Ложь;
ПараметрПериод.Значение = НачДата;
ПараметрПериод.Использование =ИспользованиеПараметраКомпоновкиданных.Всегда;
ПараметрПериод.ВключатьВДоступныеПоля = Истина;
КонечнаяДата = ПараметрПериод;
КонецЕсли;
ПараметрКомпоновки = Новый ПараметрКомпоновкиДанных("НачалоПериода");
ПараметрСКД = ТекОтчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКомпоновки);
ПараметрСКД.Значение = НачДата;
ПараметрСКД.Использование = Истина;
КонДата = Дата(Год(ТекущаяДата()),Месяц(текущаяДата()),День(ТекущаяДата()),20,0,0);
ПараметрКомпоновки = Новый ПараметрКомпоновкиДанных("КонецПериода");
ПараметрСКД = ТекОтчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКомпоновки);
ПараметрСКД.Значение = КонДата;
ПараметрСКД.Использование = Истина; //Помещаем в переменную данные о расшифровке данных
ПараметрДанных= ТекОтчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
ПараметрДанных.Значение = НачДата;
ПараметрДанных.Использование=Истина;
ПараметрДанных= ТекОтчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода");
ПараметрДанных.Значение = КонДата;
ПараметрДанных.Использование=Истина;
МассивН = Новый Массив;
МассивН.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000001198"));
МассивН.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000001197"));
МассивН.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000001200"));
СЗ = Новый СписокЗначений;
СЗ.ЗагрузитьЗначения(МассивН);
тОтчет = ТекОтчет;
//НастройкиКД = ТекОтчет.КомпоновщикНастроек.ПолучитьНастройки();
НастройкиКД = Настройки;
ВидВзвешивания = тОтчет.КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("ВидВзвешивания"); //поле отбора присутствует в СКД
НовыйОтбор = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйОтбор.ЛевоеЗначение = ВидВзвешивания.Поле;
НовыйОтбор.ПравоеЗначение = Перечисления.ИнтекоВидыВзвешивания.Отгрузка;
НовыйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйОтбор.Использование = Истина;
Отправитель = тОтчет.КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Отправитель"); //поле отбора присутствует в СКД
НовыйОтбор = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйОтбор.ЛевоеЗначение = Отправитель.Поле;
НовыйОтбор.ПравоеЗначение = Склад;
НовыйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйОтбор.Использование = Истина;
Номенклатура = тОтчет.КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Номенклатура"); //поле отбора присутствует в СКД
НовыйОтбор = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйОтбор.ЛевоеЗначение = Номенклатура.Поле;
НовыйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии;
НовыйОтбор.ПравоеЗначение = СЗ;
НовыйОтбор.Использование = Истина;
тОтчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКД);
//
///////////////////////////////////////////////////////////////////////////////////////////////////
ПараметрКомпоновки = Новый ПараметрКомпоновкиДанных("НачалоПериода");
ПараметрСКД = ТекОтчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКомпоновки);
ПараметрСКД.Значение = НачДата;
ПараметрСКД.Использование = Истина;
КонДата = Дата(Год(ТекущаяДата()),Месяц(текущаяДата()),День(ТекущаяДата()),20,0,0);
ПараметрКомпоновки = Новый ПараметрКомпоновкиДанных("КонецПериода");
ПараметрСКД = ТекОтчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКомпоновки);
ПараметрСКД.Значение = КонДата;
ПараметрСКД.Использование = Истина; //Помещаем в переменную данные о расшифровке данных
ПараметрДанных= ТекОтчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
ПараметрДанных.Значение = НачДата;
ПараметрДанных.Использование=Истина;
ПараметрДанных= ТекОтчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода");
ПараметрДанных.Значение = КонДата;
ПараметрДанных.Использование=Истина;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Расшифровка = Новый ДанныеРасшифровкиКомпоновкиДанных;
//Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
//Передаем в макет компоновки схему, настройки и данные расшифровки
МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, ТекОтчет.КомпоновщикНастроек.ПолучитьНастройки(), Расшифровка);
ВнешниеПараметры = Новый Структура;
//Выполним компоновку с помощью процессора компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеПараметры, Расшифровка);
//Выводим результат в табличный документ
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Таб);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
ТаблицаРезультат = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ВОзврат Таб;
КонецФункции
в результате получаем отчет, но без данных табличных частей.
Ткните пожалуйста носом, где недочет.