Подскажите как вызвать уже сохраненный отчет СКД

1. yurazyuraz 21.01.21 14:21 Сейчас в теме
Подскажите пожалуйста как вызвать настроенный и сохраненный СКД,
там есть уже готовые отборы


стандартный "Лимиты денежных средств" вызывается , но мне нужно именно мой вариант

процедура yz_ВызватьМойСКД() экспорт
	СхемаКомпоновкиДанных = Отчеты.ЛимитыРасходаДенежныхСредств.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;   
	//Помещаем в переменную данные о расшифровке данных
	ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
	//Формируем макет, с помощью компоновщика макета
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	//Передаем в макет компоновки схему, настройки и данные расшифровки
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
	ДобавитьПараметрКомпоновки(МакетКомпоновки, "НачалоПериода", НачалоМесяца(ТекущаяДата()) );
	ДобавитьПараметрКомпоновки(МакетКомпоновки, "КонецПериода", КонецМесяца(ТекущаяДата()) );
	ДобавитьПараметрКомпоновки(МакетКомпоновки, "ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ПустаяСсылка() );
	МакетКомпоновки.ЗначенияПараметров.НачалоПериода.Значение = НачалоМесяца(ТекущаяДата());
	МакетКомпоновки.ЗначенияПараметров.КонецПериода.Значение = КонецМесяца(ТекущаяДата());
	//Выполним компоновку с помощью процессора компоновки
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
	//Очищаем поле табличного документа
	РезультатТД = Новый ТабличныйДокумент;
	//Выводим результат в табличный документ
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(РезультатТД);
	
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);   
	РезультатТД.записать("C:\123.xls", ТипФайлаТабличногоДокумента.XLS);  
КонецПроцедуры



Процедура ДобавитьПараметрКомпоновки(МакетКомпоновки, Имя, Значение)
	Если МакетКомпоновки.ЗначенияПараметров.Найти(Имя) = Неопределено Тогда
		ПараметрКомпоновки = МакетКомпоновки.ЗначенияПараметров.Добавить();
		ПараметрКомпоновки.Имя = Имя;
		ПараметрКомпоновки.Значение = Значение;
	КонецЕсли;
КонецПроцедуры

Показать
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Степной 27 21.01.21 14:37 Сейчас в теме
(1) Посмотрите в сторону
УстановитьТекущийВариант(<КлючВарианта>) 
3. yurazyuraz 21.01.21 15:14 Сейчас в теме
(2) что то не пойму как, я вызываю из своей обработки
ругается на синтаксис , тут имя отчета видимо ? все равно ругается

УстановитьТекущийВариант("Лимиты денежных средств") ;

{ВнешняяОбработка.yz_ОтчетРасчетыРасходаДенежныхСредств.МодульОбъекта(60,5)}: Процедура или функция с указанным именем не определена (УстановитьТекущийВариант)
<<?>>УстановитьТекущийВариант("Лимиты денежных средств") ; (Проверка: Сервер)
4. Степной 27 21.01.21 15:19 Сейчас в теме
(3) Нужно вызывать в форме отчета.
5. yurazyuraz 21.01.21 15:23 Сейчас в теме
(4) у меня это не может вызываться из формы, т е это будет обработка - которая будет вызываться по регламентному заданию. Далее будет формироваться файл и рассылаться по почте.
Т е нет диалога с пользователем, нет запуска из формы в принципе.
6. Степной 27 21.01.21 15:47 Сейчас в теме
(5) Понятно. Тогда, как вариант, можете получить настройки компоновки данных по нужному варианту из хранилища вариантов отчетов.
7. yurazyuraz 21.01.21 20:43 Сейчас в теме
(6)
ВЫБРАТЬ  
		Варианты.КлючВарианта
	ИЗ
		Справочник.ВариантыОтчетов КАК Варианты
		где  Варианты.Наименование="Лимиты расхода денежных средств - БЕЗ ДЕПОЗИТА И ВАЛЮТЫ"

8. yurazyuraz 22.01.21 06:07 Сейчас в теме
(6)
получить настройки компоновки


можете подсказать код как мне получить настройки для моего варианта отчета ?
"Лимиты расхода денежных средств - БЕЗ ДЕПОЗИТА И ВАЛЮТЫ"
9. yurazyuraz 22.01.21 06:24 Сейчас в теме
Если я правильно понимаю , есть вариант зачитать стандартные настройки и заполнить реквизиты самостоятельно.

но у меня не получается заполнить отбор.

процедура yz_ОтчетРассылкаЛимитыРасходаДенежныхСредств() Экспорт
	
	//Получаем схему из макета
	СхемаКомпоновкиДанных = Отчеты.ЛимитыРасходаДенежныхСредств.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	
	//Из схемы возьмем настройки по умолчанию
	Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;   
	
	////ФильтрСКД = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	////
	////ПолеОтбора = Новый ПолеКомпоновкиДанных("Статья ДДС");
	////ФильтрСКД.ЛевоеЗначение = ПолеОтбора;
	////ФильтрСКД.Использование = Истина;	
	////
	////ФильтрСКД.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
	////СписокДляОтбора = Новый СписокЗначений;
	////СписокДляОтбора.Добавить("Покупка валюты");
	////СписокДляОтбора.Добавить("Выплата депозита");
	////СписокДляОтбора.Добавить("депозит");
	////СписокДляОтбора.Добавить("Поступление денежных средств по депозитам");
	////ФильтрСКД.ПравоеЗначение = СписокДляОтбора; 	
	
	//Помещаем в переменную данные о расшифровке данных
	ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
	//Формируем макет, с помощью компоновщика макета
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	//Передаем в макет компоновки схему, настройки и данные расшифровки
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
	
	// Формируем параметры
	Если МакетКомпоновки.ЗначенияПараметров.Найти("ХозяйственнаяОперация") = Неопределено Тогда
		ПараметрКомпоновки = МакетКомпоновки.ЗначенияПараметров.Добавить();
		ПараметрКомпоновки.Имя = "ХозяйственнаяОперация";
		ПараметрКомпоновки.Значение = Перечисления.ХозяйственныеОперации.ПустаяСсылка();
	КонецЕсли;	
	МакетКомпоновки.ЗначенияПараметров.НачалоПериода.Значение = НачалоМесяца(ТекущаяДата());
	МакетКомпоновки.ЗначенияПараметров.КонецПериода.Значение = КонецМесяца(ТекущаяДата());
	
	//Выполним компоновку с помощью процессора компоновки
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
	//Очищаем поле табличного документа
	РезультатТД = Новый ТабличныйДокумент;
	//Выводим результат в табличный документ
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(РезультатТД);
	
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);   
	
	// Формируем в файл для дальнейшей рассылки
	РезультатТД.записать("C:\123.xls", ТипФайлаТабличногоДокумента.XLS);  
конецпроцедуры

Показать
Прикрепленные файлы:
10. yurazyuraz 22.01.21 06:34 Сейчас в теме
Второй вариант и он более желательный
это вызвать уже настроенный СКД


Вызов отчета планируется производить из внешней обработки. Формировать файл и делать рассылку.
Прикрепленные файлы:
11. yurazyuraz 22.01.21 08:02 Сейчас в теме
Попытка вызвать отчет и сформировать свои параметры настройки

даты и ХозяйственнаяОперация задаются нормально

	// Формируем параметры
	Если МакетКомпоновки.ЗначенияПараметров.Найти("ХозяйственнаяОперация") = Неопределено Тогда
		ПараметрКомпоновки = МакетКомпоновки.ЗначенияПараметров.Добавить();
		ПараметрКомпоновки.Имя = "ХозяйственнаяОперация";
		ПараметрКомпоновки.Значение = Перечисления.ХозяйственныеОперации.ПустаяСсылка();
	КонецЕсли;	
	МакетКомпоновки.ЗначенияПараметров.НачалоПериода.Значение = НачалоМесяца(ТекущаяДата());
	МакетКомпоновки.ЗначенияПараметров.КонецПериода.Значение = КонецМесяца(ТекущаяДата());
Показать


при формировании отбора тоже вроде как нет ошибок

но при выполнении вылетает на этом месте

{ВнешняяОбработка.yz_ОтчетРаччылкаЛимитыРасходаДенежныхСредств.МодульОбъекта(182)}: Ошибка при вызове метода контекста (Выполнить)
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
по причине:
Ошибка компоновки макета
по причине:
Поле не найдено "[Статья ДДС]"


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



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


	МакетКомпоновки.ЗначенияПараметров.КонецПериода.Значение = КонецМесяца(ТекущаяДата());
	
	//Выполним компоновку с помощью процессора компоновки
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
	//Очищаем поле табличного документа
	РезультатТД = Новый ТабличныйДокумент;
	//Выводим результат в табличный документ
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(РезультатТД);
	
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);   
	
	// Формируем в файл для дальнейшей рассылки
	РезультатТД.записать("C:\123.xls", ТипФайлаТабличногоДокумента.XLS);  
конецпроцедуры


Показать
12. Степной 27 22.01.21 10:22 Сейчас в теме
(8) Можно так:

ВыборкаВарианты = ХранилищеВариантовОтчетов.Выбрать();
	
	Пока ВыборкаВарианты.Следующий() Цикл
		
		// Вариант 1. По представлению.
		Если ВыборкаВарианты.Представление = "Название моего варианта" Тогда     		
			НастройкиМоегоВариантаОтчета	= ВыборкаВарианты.Настройки; 		
		КонецЕсли; 
		
		// Вариант 2. По ключу.
		Если ВыборкаВарианты.КлючНастроек = "568eef44-6de7-48d1-8f3f-c1f879e6e858" Тогда     		
			НастройкиМоегоВариантаОтчета	= ВыборкаВарианты.Настройки; 		
		КонецЕсли; 
	
	КонецЦикла;
Показать
13. yurazyuraz 27.01.21 09:27 Сейчас в теме
(12)
ВыборкаВарианты = ХранилищеВариантовОтчетов.Выбрать();

тут вылетает :(

{ВнешняяОбработка.yz_ОтчетРаccылкаЛимитыРасходаДенежныхСредств.МодульОбъекта(161)}: Метод объекта не обнаружен (Выбрать)
ВыборкаВарианты = ХранилищеВариантовОтчетов.Выбрать();
14. Степной 27 27.01.21 11:37 Сейчас в теме
Оставьте свое сообщение

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