|
Результат типового отчета в таблицу значений | ☑ | ||
---|---|---|---|---|
0
first_may
26.11.20
✎
20:39
|
Добрый вечер.
Конфигурация 1С:ERP Управление предприятием 2 (2.4.6.174). Есть типовой отчет "Ведомость по партиям товаров". В нем есть сохраненная настройка, например Тест. Подскажите пож, как в своей обработке программно вызвать этот отчет с этой настройкой и результат получить в таблицу значений? |
|||
1
first_may
26.11.20
✎
20:50
|
Ну может просто подскажите, как загрузить настройки отчета?
|
|||
2
МихаилМ
26.11.20
✎
20:53
|
||||
3
first_may
26.11.20
✎
20:58
|
||||
4
first_may
26.11.20
✎
21:00
|
(2) пароль просит
|
|||
5
mikecool
26.11.20
✎
21:45
|
дык, если программно, то в качестве настройки берешь из вариантов, они все в схеме доступны
|
|||
6
Cthulhu
26.11.20
✎
21:57
|
(4): на этом ресурсе пароль... кхм, вот при регистрации ты с правилами согласился - не читая их при том. и тут вдруг оказывается, что их прочитать надо. не потому что они интересные, а потому что там ответ на твой вопрос есть. )))
|
|||
7
mikecool
26.11.20
✎
21:59
|
+5 как вариант
пСхемаКомпоновкиДанных = пФорма.СхемаКомпоновкиДанных; пКомпоновщикНастроек = пФорма.КомпоновщикНастроек; пКомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(пСхемаКомпоновкиДанных)); пКомпоновщикНастроек.ЗагрузитьНастройки(пСхемаКомпоновкиДанных.ВариантыНастроек.ПоОшибкам.Настройки); |
|||
8
Вафель
26.11.20
✎
22:03
|
настройка не предопределеная, а сохраненная как я понял
|
|||
9
first_may
26.11.20
✎
23:03
|
(8) да да.. настройка сохраненная
|
|||
10
first_may
26.11.20
✎
23:03
|
получается вот так
// получаю настройки из макета Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет"); Настройки = Макет.ПолучитьТекст(); // сохраняю в файл ИмяФайлаXML = ПолучитьИмяВременногоФайла("xml"); Файл = Новый ЗаписьТекста(ИмяФайлаXML); Файл.ЗаписатьСтроку(Настройки); Файл.Закрыть(); // читаю в найстройки СКД ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяФайлаXML); НастройкиКомпоновкиДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); |
|||
11
first_may
26.11.20
✎
23:04
|
// получаем схему компоновки данных
Схема = Отчеты.ВедомостьПоПартиямТоваров.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); // получаем настройки по умолчанию компоновки //Настройки = Схема.НастройкиПоУмолчанию; // создаем новый компановщик настроек компановки данных КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных); // заполняем параметр "Период" Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период"); Параметр.Использование = Истина; Параметр.Значение.ДатаНачала = НачалоДня('20200701000000'); Параметр.Значение.ДатаОкончания = КонецДня('20200731235959'); |
|||
12
first_may
26.11.20
✎
23:04
|
// получим макет компоновки
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Макет = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); Макет = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.ПолучитьНастройки()); Макет.ЗначенияПараметров.ТекущаяДата.Значение = ТекущаяДата(); Макет.ЗначенияПараметров.Валюта.Значение = Справочники.Валюты.НайтиПоКоду("643"); Макет.ЗначенияПараметров.НачалоПериода.Значение = НачалоДня('20200701000000'); Макет.ЗначенияПараметров.НачалоПериода22.Значение = НачалоДня('20200701000000'); Макет.ЗначенияПараметров.П.Значение = НачалоДня('20200701000000'); Макет.ЗначенияПараметров.КонецПериода.Значение = КонецДня('20200731235959'); Макет.ЗначенияПараметров.КонецПериода21.Значение = КонецДня('20200731235959'); Макет.ЗначенияПараметров.П2.Значение = КонецДня('20200731235959'); // через процессор компоновки получим результат ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет); //ТаблицаРезультат = Новый ТаблицаЗначений; // //ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; //ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат); //ПроцессорВывода.Вывести(ПроцессорКомпоновки); ТабличныйДокумент = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ТабличныйДокумент.Записать("D:\Zharikov Sergey\Отчет1.xls", ТипФайлаТабличногоДокумента.XLS); |
|||
13
first_may
26.11.20
✎
23:04
|
Открываю Отчет1.xls, но в нем только шапка.
|
|||
14
first_may
26.11.20
✎
23:06
|
Хорошо бы в ТаблицаЗначений, но и так пусто.
Что то не так. |
|||
15
first_may
27.11.20
✎
14:17
|
Подскажет кто? Есть ли ошибка в коде?
|
|||
16
Greeen
27.11.20
✎
14:58
|
Вот кусок кода, может быть поможет
СКД = ЗначениеОбъект.ПолучитьМакет("Макет"); АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор); ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы); КомпоновщикНастроек= Новый КомпоновщикНастроекКомпоновкиДанных; НастройщикКомпоновкиФИ.Инициализировать(ИсточникНастроек); НастройщикКомпоновкиФИ.ЗагрузитьНастройки(ЗначениеОбъект.ХранилищеНастроекОтбора.Получить()); НастройкиКомпоновщика = КомпоновщикНастроек.Настройки; ПараметрыНастройки = НастройкиКомпоновщика.ПараметрыДанных; <Тут устанавливаем настройки, отборы> КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СКД, КомпоновщикНастроек.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных); ТаблицаРезультат = Новый ТаблицаЗначений; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Вот так в таблицу значений будет |
|||
17
Greeen
27.11.20
✎
15:00
|
НастройщикКомпоновкиФИ заменить на КомпоновщикНастроек
Криво скопировал =) |
|||
18
first_may
27.11.20
✎
21:09
|
(17) спасибо, пригодилось..
а так сам виноват.. не правильно параметр отчета заполнял.. все получилось спасибо всем! |
|||
19
first_may
27.11.20
✎
21:31
|
Да, чуть не забыл.. Решение, может пригодиться кому :)
ОсновнаяСхемаКомпоновкиДанныхНастройки - текстовый макет, в котором вставлен текст настроек из отчета в предприятии ОсновнаяСхемаКомпоновкиДанных - сам отчет // получаю настройки из макета Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанныхНастройки"); Настройки = Макет.ПолучитьТекст(); // сохраняю настройки в файл ИмяФайлаXML = ПолучитьИмяВременногоФайла("xml"); Файл = Новый ЗаписьТекста(ИмяФайлаXML); Файл.ЗаписатьСтроку(Настройки); Файл.Закрыть(); // читаю в найстройки СКД ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяФайлаXML); НастройкиКомпоновкиДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); ЧтениеXML.Закрыть(); УдалитьФайлы(ИмяФайлаXML); // параметры отчета Д1 = НачалоДня(объект.Дата1); Д2 = КонецДня(объект.Дата2); // получаем схему компоновки данных //Схема = Отчеты.ВедомостьПоПартиямТоваров.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Схема = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); // заменил ТекущаяДатаСеанса() на ТекущаяДата() // создаем новый компановщик настроек компановки данных КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема)); КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных); Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период"); Параметр.Использование = Истина; Параметр.Значение.ДатаНачала = Д1; Параметр.Значение.ДатаОкончания = Д2; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода"); Параметр.Использование = Истина; Параметр.Значение = Д1; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода22"); Параметр.Использование = Истина; Параметр.Значение = Д1; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода"); Параметр.Использование = Истина; Параметр.Значение = Д2; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода21"); Параметр.Использование = Истина; Параметр.Значение = Д2; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТекущаяДата"); Параметр.Использование = Истина; Параметр.Значение = ТекущаяДата(); Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Валюта"); Параметр.Использование = Истина; Параметр.Значение = Справочники.Валюты.НайтиПоКоду("643"); Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ПоПредприятию"); Параметр.Использование = Истина; Параметр.Значение = Истина; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДанныеПУ21"); Параметр.Использование = Истина; Параметр.Значение = Ложь; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДанныеПУ22"); Параметр.Использование = Истина; Параметр.Значение = Истина; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТекстЗапросаВес"); Параметр.Использование = Истина; Параметр.Значение = 0; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТекстЗапросаОбъем"); Параметр.Использование = Истина; Параметр.Значение = 0; // получим макет компоновки КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.Настройки); // для ТабличныйДокумент //МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); // для ТаблицаЗначений // через процессор компоновки получим результат ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ТабличныйДокумент = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ТабличныйДокумент.Записать("D:\....\Отчет1.xls", ТипФайлаТабличногоДокумента.XLS); //ТаблицаРезультат = Новый ТаблицаЗначений; // //ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; //ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат); //ПроцессорВывода.Вывести(ПроцессорКомпоновки); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |