Имя: Пароль:
1C
1С v8
Результат типового отчета в таблицу значений
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
(2) а можно ссылку?
если конечно тут можно выкладывать..

или на почту [email protected]
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);
    
    
    //ТаблицаРезультат = Новый ТаблицаЗначений;
    //
    //ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    //ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат);
    //ПроцессорВывода.Вывести(ПроцессорКомпоновки);