Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сохранение отчета СКД с параметрами в файл формата JSON
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Constantus
Приветствую, Форумчане!
УПП, писанная, переписанная, адаптированная под УФ

В наследство достался справочник (не знаю почему справочник), в котором выбирается внешний отчет с параметрами периода (месяц, квартал...). Далее нажимается кнопка "Сохранить внешний файл".

По кнопке формируется файл результата отчета в формате JSON.

Всё хорошо, но дело в том, что всё подстроено под отчеты, сделанные под обычное приложение, где в отчетах используется функция "СформироватьОтчет(...)"

Каким-то волшебным образом по этой кнопке передается период, далее обращается к "Сформироватьотчет", получает результат в виде таблицы и формирует файл.

Теперь встал вопрос переделать эту кнопку, чтобы формировался файл в формате JSON для обычных отчетов СКД, сделанных для Управляемого приложения.

Соответственно в отчетах СКД управляемых форм нет никаких функций в модуле объекта этого отчета (в частности функции "СформироватьОтчет"

Подскажите как запустить внешний отчет СКД с параметрами периода, чтобы он выполнился и сохранил результат во внешнем файле формата JSON?
sava1
разницы между ОФ и УФ для СКД нет

сохранение в жсон


СтруктураЗапроса = Новый Структура;
СтруктураЗапроса.Вставить("СхемаКомпоновкиДанных", СКД);
СтруктураЗапроса.Вставить("НастройкиОтчета", НастройкиОтчета);
СтруктураЗапроса.Вставить("ДанныеРасшифровки", ДанныеРасшифровки);
СтруктураЗапроса.Вставить("ДокументРезультат", ДокументРезультат);

СтруктураЗапросаJSON    = СериализоватьОбъектJSON(СтруктураЗапроса);


Функция СериализоватьОбъектJSON(Данные) Экспорт
    
    ЗаписьXDTO = Новый ЗаписьJSON;    
    ЗаписьXDTO.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьJSON(ЗаписьXDTO, Данные, НазначениеТипаXML.Явное);    
    СтрокаXDTO = ЗаписьXDTO.Закрыть();

    Возврат СтрокаXDTO;
    
КонецФункции
Constantus
sava1 @ Сегодня, 15:02 необходимо зарегистрироваться для просмотра ссылки ,

СтруктураЗапроса.Вставить("СхемаКомпоновкиДанных", СКД);
СтруктураЗапроса.Вставить("НастройкиОтчета", НастройкиОтчета);


А как передать значения "СКД" и "НастройкиОтчета"?

Есть у меня внешний отчет "ОтчетАхКакой", лежит на "С:\"

У этого отчета есть параметры "ДатаНачало" и "ДатаКонец"

Где
орплорпло Между &ДатаНачало И &ДатаКонец
Batchir
необходимо зарегистрироваться для просмотра ссылки
Constantus

Нашел я велосипед как программно запустить классический отчет СКД, получить из него таблицу значений (нужный результат) и далее вытворять с этой ТЗ что вздумается...

Но столкнулся с такой проблемой. Дело в том, что есть отчеты, где применяются "Набор данных", да еще и с объединением. В этом случае моё изобретение велосипеда не срабатывает, выдает ошибку:

Ошибка при вызове метода контекста (Инициализировать)
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных)
"Ошибка создания набора данных "НаборДанныхТакойТо""

Где "НаборДанныхТакойТо" и есть набор данных в отчете СКД (их несколько)

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




Как данный код запустить для отчетов СКД с набором данных?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.