Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Сохранение отчета СКД с параметрами в файл формата JSON          
Constantus Подменю пользователя
сообщение 28.01.22, 10:23
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Приветствую, Форумчане!
УПП, писанная, переписанная, адаптированная под УФ

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

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

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

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

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

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

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

sava1 Подменю пользователя
сообщение 28.01.22, 11:02
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

разницы между ОФ и УФ для СКД нет

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


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

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


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

    Возврат СтрокаXDTO;
    
КонецФункции

Constantus Подменю пользователя
сообщение 28.01.22, 13:21
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

sava1 @ Сегодня, 15:02 * ,

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


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

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

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

Где
орплорпло Между &ДатаНачало И &ДатаКонец

Batchir Подменю пользователя
сообщение 28.01.22, 15:42
Сообщение #4

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

[необходимо зарегистрироваться для просмотра ссылки]

Constantus Подменю пользователя
сообщение 30.01.22, 10:22
Сообщение #5

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0


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

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

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

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

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




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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 25.04.24, 13:29
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!