Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Результат типового отчета в таблицу значений

Результат типового отчета в таблицу значений
Я
   first_may
 
26.11.20 - 20:39
Добрый вечер.

Конфигурация 1С:ERP Управление предприятием 2 (2.4.6.174).

Есть типовой отчет "Ведомость по партиям товаров".
В нем есть сохраненная настройка, например Тест.

Подскажите пож, как в своей обработке программно вызвать этот
отчет с этой настройкой и результат получить в таблицу значений?
   first_may
 
1 - 26.11.20 - 20:50
Ну может просто подскажите, как загрузить настройки отчета?
   МихаилМ
 
2 - 26.11.20 - 20:53
   first_may
 
3 - 26.11.20 - 20:58
(2) а можно ссылку?
если конечно тут можно выкладывать..

или на почту first_may@mail.ru
   first_may
 
4 - 26.11.20 - 21:00
(2) пароль просит
   mikecool
 
5 - 26.11.20 - 21:45
дык, если программно, то в качестве настройки берешь из вариантов, они все в схеме доступны
   Cthulhu
 
6 - 26.11.20 - 21:57
(4): на этом ресурсе пароль... кхм, вот при регистрации ты с правилами согласился - не читая их при том. и тут вдруг оказывается, что их прочитать надо. не потому что они интересные, а потому что там ответ на твой вопрос есть. )))
   mikecool
 
7 - 26.11.20 - 21:59
+5 как вариант
пСхемаКомпоновкиДанных = пФорма.СхемаКомпоновкиДанных;
пКомпоновщикНастроек = пФорма.КомпоновщикНастроек;
пКомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(пСхемаКомпоновкиДанных));
пКомпоновщикНастроек.ЗагрузитьНастройки(пСхемаКомпоновкиДанных.ВариантыНастроек.ПоОшибкам.Настройки);
   Вафель
 
8 - 26.11.20 - 22:03
настройка не предопределеная, а сохраненная как я понял
   first_may
 
9 - 26.11.20 - 23:03
(8) да да.. настройка сохраненная
   first_may
 
10 - 26.11.20 - 23:03
получается вот так

    // получаю настройки из макета

    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    Настройки = Макет.ПолучитьТекст();
    
    // сохраняю в файл

    ИмяФайлаXML = ПолучитьИмяВременногоФайла("xml");
    Файл = Новый ЗаписьТекста(ИмяФайлаXML);
    Файл.ЗаписатьСтроку(Настройки);
    Файл.Закрыть();
    
    // читаю в найстройки СКД

    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл(ИмяФайлаXML);
    НастройкиКомпоновкиДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
   first_may
 
11 - 26.11.20 - 23:04
// получаем схему компоновки данных

    Схема = Отчеты.ВедомостьПоПартиямТоваров.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    // получаем настройки по умолчанию компоновки

    //Настройки = Схема.НастройкиПоУмолчанию;

    // создаем новый компановщик настроек компановки данных

    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных);
    
    // заполняем параметр "Период"

    Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
    Параметр.Использование = Истина;
    Параметр.Значение.ДатаНачала    = НачалоДня('20200701000000');
    Параметр.Значение.ДатаОкончания = КонецДня('20200731235959');
   first_may
 
12 - 26.11.20 - 23:04
// получим макет компоновки

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    //Макет = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

    Макет = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.ПолучитьНастройки());
    Макет.ЗначенияПараметров.ТекущаяДата.Значение = ТекущаяДата();
    Макет.ЗначенияПараметров.Валюта.Значение = Справочники.Валюты.НайтиПоКоду("643");
    Макет.ЗначенияПараметров.НачалоПериода.Значение   = НачалоДня('20200701000000');
    Макет.ЗначенияПараметров.НачалоПериода22.Значение = НачалоДня('20200701000000');
    Макет.ЗначенияПараметров.П.Значение               = НачалоДня('20200701000000');
    Макет.ЗначенияПараметров.КонецПериода.Значение    = КонецДня('20200731235959');
    Макет.ЗначенияПараметров.КонецПериода21.Значение  = КонецДня('20200731235959');
    Макет.ЗначенияПараметров.П2.Значение              = КонецДня('20200731235959');
    
    
    
    // через процессор компоновки получим результат

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(Макет);
    
    //ТаблицаРезультат = Новый ТаблицаЗначений;

    //

    //ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

    //ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат);

    //ПроцессорВывода.Вывести(ПроцессорКомпоновки);

    
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    ТабличныйДокумент.Записать("D:\Zharikov Sergey\Отчет1.xls", ТипФайлаТабличногоДокумента.XLS);
   first_may
 
13 - 26.11.20 - 23:04
Открываю Отчет1.xls, но в нем только шапка.
   first_may
 
14 - 26.11.20 - 23:06
Хорошо бы в ТаблицаЗначений, но и так пусто.
Что то не так.
   first_may
 
15 - 27.11.20 - 14:17
Подскажет кто? Есть ли ошибка в коде?
   Greeen
 
16 - 27.11.20 - 14:58
Вот кусок кода, может быть поможет

СКД = ЗначениеОбъект.ПолучитьМакет("Макет");
АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
    
ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы);
КомпоновщикНастроек= Новый КомпоновщикНастроекКомпоновкиДанных;

НастройщикКомпоновкиФИ.Инициализировать(ИсточникНастроек);
НастройщикКомпоновкиФИ.ЗагрузитьНастройки(ЗначениеОбъект.ХранилищеНастроекОтбора.Получить());


НастройкиКомпоновщика = КомпоновщикНастроек.Настройки;
ПараметрыНастройки = НастройкиКомпоновщика.ПараметрыДанных;

<Тут устанавливаем настройки, отборы> 

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СКД,  КомпоновщикНастроек.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);

ТаблицаРезультат = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Вот так в таблицу значений будет
   Greeen
 
17 - 27.11.20 - 15:00
НастройщикКомпоновкиФИ заменить на КомпоновщикНастроек
Криво скопировал =)
   first_may
 
18 - 27.11.20 - 21:09
(17) спасибо, пригодилось..

а так сам виноват.. не правильно параметр отчета заполнял..


все получилось

спасибо всем!
   first_may
 
19 - 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);
    
    
    //ТаблицаРезультат = Новый ТаблицаЗначений;

    //

    //ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

    //ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат);

    //ПроцессорВывода.Вывести(ПроцессорКомпоновки);

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.