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

Программное формирование отчета СКД

Программное формирование отчета СКД
Я
   MistaEr
 
27.10.20 - 11:50
Здравствуйте!
Есть отчет на СКД. Внешние наборы данных СКД формируются при компоновке результата с использованием множества локальных переменных модуля объекта. Не хотелось бы все это повторять заново в своем коде. Есть ли возможность сформировать отчет программно, примерно так: Дорогой ОтчетОбъект, вот тебе два параметра (остальные параметры считай что не заполнены), вот тебе Вариант отчета (или даже имя варианта), вот тебе ТабличныйДокумент, сформируйся, пожалуйста в мой табличный документ)
   ДенисЧ
 
1 - 27.10.20 - 11:55
Я не против. Обращайся. Только с уважением )))

Подсказываю. У отчёта есть метод СкопоноватьРезультат(ТабДокумент, данныеРасшифровки)
   MistaEr
 
2 - 27.10.20 - 11:57
Спасибо попробуй, отпишусь)
   MistaEr
 
3 - 27.10.20 - 11:58
(2) Попробую
   SleepyHead
 
4 - 27.10.20 - 12:15
(0)

    

    Ключ = "";// здесь идентификатор ключа варианта отчета

    
    Если ОтчетВСоставеКонфигурации Тогда
        Модуль = Отчеты.ИмяОтчетаВКонфигураторе.Создать();
    Иначе
        ОписаниеЗащиты = Новый ОписаниеЗащитыОтОпасныхДействий;
        ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;
        Модуль = ВнешниеОтчеты.Создать(ПутьКФайлуВнешнегоОтчета, Ложь, ОписаниеЗащиты);
    КонецЕсли;
    
    Модуль.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек[Ключ].Настройки);
    
    // следующие две строки необязательны, но отчеты в составе БСП могут использовать эти значения в событии ПриКомпоновкеРезультата

    Модуль.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("КлючВарианта", Ключ);
    Модуль.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ВариантНаименование", СхемаКомпоновкиДанных.ВариантыНастроек[Ключ].Представление);
    
    // установка параметров

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

    
    // посмотреть, что в событии ПриКомпоновкеРезультата, обычно там примерно такой код

    НастройкиСКД = Модуль.КомпоновщикНастроек.ПолучитьНастройки();
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(Модуль.СхемаКомпоновкиДанных, НастройкиСКД, ДанныеРасшифровки);
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);    
    
    // найти такую строку

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

    
    // и заменить на такую

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

ОтчетОбъект = Отчеты.МойОтчет.Создать();
        
        СхемаКомпоновкиДанных = ОтчетОбъект.СхемаКомпоновкиДанных;
        КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек;
        
        КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек[ИмяВариантаОтчета].Настройки);
        
        КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("КлючВарианта", ИмяВариантаОтчета);
        КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ВариантНаименование", СхемаКомпоновкиДанных.ВариантыНастроек[ИмяВариантаОтчета].Представление);
        
        КомпоновкаДанныхКлиентСервер.УстановитьПараметр(КомпоновщикНастроек.Настройки, "Период", ПериодОтчета, Истина, Истина);  
        КомпоновкаДанныхКлиентСервер.УстановитьПараметр(КомпоновщикНастроек.Настройки, "Подразделение", Выборка.Подразделение, Истина, Истина); 
        
        ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент);

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.