Сохранение отчета СКД в файл с пользовательским вариантом отчета.

1. user838744 03.08.21 11:34 Сейчас в теме
Стоит задача сохранять на сервере в файл типовой отчет с пользовательским вариантом настроек. Пользовательский вариант настроек полностью отличается от типового.
Код получения отчета и сохранения такой:

Отчет = Отчеты["ВедомостьПоТоварамНаСкладах"].Создать(); // Тип - ОтчетОбъект.ВедомостьПоТоварамНаСкладах
ТабличныйДокумент = Новый ТабличныйДокумент;
Отчет.СкомпоноватьРезультат(ТабличныйДокумент);
ТабличныйДокумент.Записать(АдресФайла, ТипФайлаТабличногоДокумента.XLS);

Есть ли возможность применить настройки из хранилища вариантов отчётов, чтобы в эксельку формировался отчет с примененными пользовательскими настройками?
По теме из базы знаний
Найденные решения
5. ixijixi 1913 03.08.21 14:43 Сейчас в теме
Еще способ, сам частенько использую.

В режиме предприятия настраиваю отчет как надо, сохраняю настройки в ХМЛ. В нужном месте конфигурации (отчет, обработка, расширение) добавляю макет типа Текстовый документ, в него загружаю текст из ХМЛ.

Затем при вызове просто читаю настройки из макета, при необходимости можно их подредактировать.
Функция ОтчетПоНачислениям(Настройки)
	
	// Читаю настройки из макета
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(ПолучитьМакет("НастройкиКомпоновки").ПолучитьТекст());
	НастройкиВарианта = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
	
	// При необходимости переопределяю настройки
	// ...
	
	Отчет = Отчеты.АнализНачисленийИУдержаний.Создать();
	// Загружаю настройки из макета
	Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиВарианта);
	ТабличныйДокумент = Новый ТабличныйДокумент;
	Отчет.СкомпоноватьРезультат(ТабличныйДокумент);
	ТабличныйДокумент.Записать(АдресФайла, ТипФайлаТабличногоДокумента.XLS);
	
КонецФункции
Показать
user838744; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ixijixi 1913 03.08.21 12:24 Сейчас в теме
(1) В функции ПолучитьНастройкиОтчета описать процесс получения пользовательских настроек.
Отчет = Отчеты["ВедомостьПоТоварамНаСкладах"].Создать();
Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ПолучитьНастройкиОтчета());
3. user838744 03.08.21 14:31 Сейчас в теме
(2) В методе ЗагрузитьНастройки() нужно указать значение типа "НастройкиКомпоновкиДанных", не могу понять как достать его из пользовательских настроек.
Отчет = Отчеты["ВедомостьПоТоварамНаСкладах"].Создать(); // Тип - ОтчетОбъект.ВедомостьПоТоварамНаСкладах

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

	Для Каждого Элемент Из СписокВариантовОтчета Цикл
		// получаем нужную нам настройку по представлению
		Если Элемент.Представление = "Отчет по товарам" Тогда
			ВариантОтчета = Элемент;
			Идентификатор = Новый ОписаниеТипов("ИдентификаторКомпоновкиДанных");
			ПользовательскиеНастройки.ПолучитьОбъектПоИдентификатору(Идентификатор.ПривестиЗначение(Элемент.Значение));
			Прервать;
		КонецЕсли;
			
	КонецЦикла;

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

ТабличныйДокумент = Новый ТабличныйДокумент;
Отчет.СкомпоноватьРезультат(ТабличныйДокумент);
ТабличныйДокумент.Записать(АдресФайла, ТипФайлаТабличногоДокумента.XLS);
Показать


Попробовал так, прошелся отладчиком, вроде работать должно. Но на выходе выдает ошибку "Отчет не сформирован. Включите хотя бы одну группировку в "Элементы оформления и группировки".
{Отчет.ВедомостьПоТоварамНаСкладах.МодульОбъекта(182)}: ВызватьИсключение НСтр("ru= 'Отчет не сформ"
4. ixijixi 1913 03.08.21 14:33 Сейчас в теме
(3)
вроде работать должно
Не должно, потому что настройки пустые
ПользовательскиеНастройки = Новый НастройкиКомпоновкиДанных;
ПользовательскиеНастройки надо доставать из сохраненных настроек пользователя. Если конфа на БСП, то кури
ВариантыОтчетов.ПользовательскиеНастройкиВариантаОтчета(ВариантОтчета, Пользователь, КлючНастройки)
5. ixijixi 1913 03.08.21 14:43 Сейчас в теме
Еще способ, сам частенько использую.

В режиме предприятия настраиваю отчет как надо, сохраняю настройки в ХМЛ. В нужном месте конфигурации (отчет, обработка, расширение) добавляю макет типа Текстовый документ, в него загружаю текст из ХМЛ.

Затем при вызове просто читаю настройки из макета, при необходимости можно их подредактировать.
Функция ОтчетПоНачислениям(Настройки)
	
	// Читаю настройки из макета
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(ПолучитьМакет("НастройкиКомпоновки").ПолучитьТекст());
	НастройкиВарианта = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
	
	// При необходимости переопределяю настройки
	// ...
	
	Отчет = Отчеты.АнализНачисленийИУдержаний.Создать();
	// Загружаю настройки из макета
	Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиВарианта);
	ТабличныйДокумент = Новый ТабличныйДокумент;
	Отчет.СкомпоноватьРезультат(ТабличныйДокумент);
	ТабличныйДокумент.Записать(АдресФайла, ТипФайлаТабличногоДокумента.XLS);
	
КонецФункции
Показать
user838744; +1 Ответить
6. user838744 03.08.21 15:27 Сейчас в теме
7. ixijixi 1913 03.08.21 16:40 Сейчас в теме
8. user1974124 21.02.24 14:33 Сейчас в теме
(5)Здравствуйте! Подскажите. пожалуйста, как можно донастроить настройки? я скопировала настройки пользователя в макет и там дата статичная. Как указать, чтобы отчет формировался по текущей дате?
9. ixijixi 1913 21.02.24 14:45 Сейчас в теме
(8) В событии ПриКомпоновкеРезультата вызывать код
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", Дата)
10. user1974124 21.02.24 14:55 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот