Сохранение отчета СКД в файл с пользовательским вариантом отчета.
Стоит задача сохранять на сервере в файл типовой отчет с пользовательским вариантом настроек. Пользовательский вариант настроек полностью отличается от типового.
Код получения отчета и сохранения такой:
Отчет = Отчеты["ВедомостьПоТоварамНаСкладах"].Создать(); // Тип - ОтчетОбъект.ВедомостьПоТоварамНаСкладах
ТабличныйДокумент = Новый ТабличныйДокумент;
Отчет.СкомпоноватьРезультат(ТабличныйДокумент);
ТабличныйДокумент.Записать(АдресФайла, ТипФайлаТабличногоДокумента.XLS);
Есть ли возможность применить настройки из хранилища вариантов отчётов, чтобы в эксельку формировался отчет с примененными пользовательскими настройками?
Код получения отчета и сохранения такой:
Отчет = Отчеты["ВедомостьПоТоварамНаСкладах"].Создать(); // Тип - ОтчетОбъект.ВедомостьПоТоварамНаСкладах
ТабличныйДокумент = Новый ТабличныйДокумент;
Отчет.СкомпоноватьРезультат(ТабличныйДокумент);
ТабличныйДокумент.Записать(АдресФайла, ТипФайлаТабличногоДокумента.XLS);
Есть ли возможность применить настройки из хранилища вариантов отчётов, чтобы в эксельку формировался отчет с примененными пользовательскими настройками?
По теме из базы знаний
- Автоматическая рассылка отчетов из 1С:УТ 10.3 и 1С:УПП по электронной почте
- Универсальный конструктор отчетов СКД (управляемые формы, тонкий клиент)
- Отчет на СКД с использованием форм из БСП. Варианты передачи списка значений в параметр СКД
- Пользовательские настройки отчетов 1С. Часть 2. Группировки и варианты
- Отчеты с общей формой отчета. Типовые сценарии
Найденные решения
Еще способ, сам частенько использую.
В режиме предприятия настраиваю отчет как надо, сохраняю настройки в ХМЛ. В нужном месте конфигурации (отчет, обработка, расширение) добавляю макет типа Текстовый документ, в него загружаю текст из ХМЛ.
Затем при вызове просто читаю настройки из макета, при необходимости можно их подредактировать.
В режиме предприятия настраиваю отчет как надо, сохраняю настройки в ХМЛ. В нужном месте конфигурации (отчет, обработка, расширение) добавляю макет типа Текстовый документ, в него загружаю текст из ХМЛ.
Затем при вызове просто читаю настройки из макета, при необходимости можно их подредактировать.
Функция ОтчетПоНачислениям(Настройки)
// Читаю настройки из макета
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ПолучитьМакет("НастройкиКомпоновки").ПолучитьТекст());
НастройкиВарианта = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
// При необходимости переопределяю настройки
// ...
Отчет = Отчеты.АнализНачисленийИУдержаний.Создать();
// Загружаю настройки из макета
Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиВарианта);
ТабличныйДокумент = Новый ТабличныйДокумент;
Отчет.СкомпоноватьРезультат(ТабличныйДокумент);
ТабличныйДокумент.Записать(АдресФайла, ТипФайлаТабличногоДокумента.XLS);
КонецФункции
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) В методе ЗагрузитьНастройки() нужно указать значение типа "НастройкиКомпоновкиДанных", не могу понять как достать его из пользовательских настроек.
Попробовал так, прошелся отладчиком, вроде работать должно. Но на выходе выдает ошибку "Отчет не сформирован. Включите хотя бы одну группировку в "Элементы оформления и группировки".
{Отчет.ВедомостьПоТоварамНаСкладах.МодульОбъекта(182)}: ВызватьИсключение НСтр("ru= 'Отчет не сформ"
Отчет = Отчеты["ВедомостьПоТоварамНаСкладах"].Создать(); // Тип - ОтчетОбъект.ВедомостьПоТоварамНаСкладах
ПользовательскиеНастройки = Новый НастройкиКомпоновкиДанных;
Для Каждого Элемент Из СписокВариантовОтчета Цикл
// получаем нужную нам настройку по представлению
Если Элемент.Представление = "Отчет по товарам" Тогда
ВариантОтчета = Элемент;
Идентификатор = Новый ОписаниеТипов("ИдентификаторКомпоновкиДанных");
ПользовательскиеНастройки.ПолучитьОбъектПоИдентификатору(Идентификатор.ПривестиЗначение(Элемент.Значение));
Прервать;
КонецЕсли;
КонецЦикла;
Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ПользовательскиеНастройки);
ТабличныйДокумент = Новый ТабличныйДокумент;
Отчет.СкомпоноватьРезультат(ТабличныйДокумент);
ТабличныйДокумент.Записать(АдресФайла, ТипФайлаТабличногоДокумента.XLS);
ПоказатьПопробовал так, прошелся отладчиком, вроде работать должно. Но на выходе выдает ошибку "Отчет не сформирован. Включите хотя бы одну группировку в "Элементы оформления и группировки".
{Отчет.ВедомостьПоТоварамНаСкладах.МодульОбъекта(182)}: ВызватьИсключение НСтр("ru= 'Отчет не сформ"
(3) ПользовательскиеНастройки надо доставать из сохраненных настроек пользователя. Если конфа на БСП, то кури
вроде работать должно
Не должно, потому что настройки пустыеПользовательскиеНастройки = Новый НастройкиКомпоновкиДанных;
ВариантыОтчетов.ПользовательскиеНастройкиВариантаОтчета(ВариантОтчета, Пользователь, КлючНастройки)
Еще способ, сам частенько использую.
В режиме предприятия настраиваю отчет как надо, сохраняю настройки в ХМЛ. В нужном месте конфигурации (отчет, обработка, расширение) добавляю макет типа Текстовый документ, в него загружаю текст из ХМЛ.
Затем при вызове просто читаю настройки из макета, при необходимости можно их подредактировать.
В режиме предприятия настраиваю отчет как надо, сохраняю настройки в ХМЛ. В нужном месте конфигурации (отчет, обработка, расширение) добавляю макет типа Текстовый документ, в него загружаю текст из ХМЛ.
Затем при вызове просто читаю настройки из макета, при необходимости можно их подредактировать.
Функция ОтчетПоНачислениям(Настройки)
// Читаю настройки из макета
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ПолучитьМакет("НастройкиКомпоновки").ПолучитьТекст());
НастройкиВарианта = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
// При необходимости переопределяю настройки
// ...
Отчет = Отчеты.АнализНачисленийИУдержаний.Создать();
// Загружаю настройки из макета
Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиВарианта);
ТабличныйДокумент = Новый ТабличныйДокумент;
Отчет.СкомпоноватьРезультат(ТабличныйДокумент);
ТабличныйДокумент.Записать(АдресФайла, ТипФайлаТабличногоДокумента.XLS);
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот