Программное открытие отчета СКД без формы с передачей параметров

1. independ 1119 06.03.19 13:36 Сейчас в теме
Застрял вроде бы на простом вопросе, есть отчет на СКД, помещенный в справочник Дополнительные отчеты и обработки, без формы
Открываю программно в расширении, нужно передать параметры НачПериода и КонПериода

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

&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
    Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции
Показать


Но параметры не заполняются. Предполагаю, что пользовательские настройки или настройки нужно получить из схемы компоновки
nekit_rdx; ellavs; +2 Ответить
Найденные решения
11. independ 1119 07.03.19 09:23 Сейчас в теме
Переделал без получения формы

&НаКлиенте
Процедура Расш_Остатки_ОтчетЧекиККИПосле(Команда)
	
	ВнешнийОтчетОбработкаДляОткрытияСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере("Отчет чеки ККМ УТ11");	
	
	ИмяОбработкиСлужебное = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка);
	
	ПараметрыФормы = Новый Структура;
	
	ПараметрыФормы.Вставить("КлючВарианта","Основной2");
	ПараметрыФормы.Вставить("СформироватьПриОткрытии",Истина);
	
	ПользовательскиеНастройки=ПолучитьПользовательскиеНастройки(ВнешнийОтчетОбработкаДляОткрытияСсылка);
	ПараметрыФормы.Вставить("ПользовательскиеНастройки",ПользовательскиеНастройки);
	
	ОткрытьФорму("ВнешнийОтчет." + ИмяОбработкиСлужебное + ".Форма",ПараметрыФормы, ЭтаФорма);
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
	Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции
	

&НаСервереБезКонтекста
Функция ПолучитьПользовательскиеНастройки(ВнешнийОтчетОбработкаДляОткрытияСсылка);
	КомпоновщикНастроек=ДополнительныеОтчетыИОбработкиВызовСерве­ра.ПолучитьОбъектВнешнейОбработки(ВнешнийОтчетОбработкаДляОткрытияСсылка).КомпоновщикНастроек;
	Настройки=КомпоновщикНастроек.ПолучитьНастройки();
	Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачПериода",НачалоДня(ТекущаяДата()));
	Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонПериода",КонецДня(ТекущаяДата()));
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
	Возврат КомпоновщикНастроек.ПользовательскиеНастройки;
КонецФункции
Показать
Cmapnep; TSSV; nekit_rdx; TuMyP1985; rpgshnik; v_den_v; Marliiin; arbeitenmail; golod; Volchock; specc87; ellavs; singlych; +13 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. singlych 06.03.19 14:04 Сейчас в теме
(1)
ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("НачПериода", НачалоДня(ТекущаяДата()));
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КонПериода", КонецДня(ТекущаяДата()));


почему в допсвойства, а не в элементы?
2. yaroslavkravets 06.03.19 13:59 Сейчас в теме
1. сформировать програмно СКД с установкой параметров (рекомендую) используя КомпоновщикНастроек
2. или как то так(не рекомендованно):

Отчет = ПолучитьИмяВнешнегоОбъекта("Отчет по серийным номерам");
ФормаОтчет = ПолучитьФорму("ВнешнийОтчет." + Отчет+ ".Форма.ФормаОтчета");

// установка параметров.
ФормаОтчет .Этаформа.Номенклатура = Объект.Номенклатура;
ФормаОтчет .Этаформа.СерийныеНомера = Объект.СерийныйНомер;

// запуск процедур
ФормаОтчет .ОбновитьСписокСН();
ФормаОтчет .СформироватьПоНоменклатуреНаСервере();

// открытие формы отчета.
ОткрытьФорму(ФормаОтчетПоСерийнымНомерам);
independ; +1 Ответить
9. independ 1119 06.03.19 21:37 Сейчас в теме
(2)
(7)
Заработало, получил форму отчета, далее Отчет.КомпоновщикНастроек, дальше дело техники, всем спасибо

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

&НаСервереБезКонтекста
Функция ПолучитьПользовательскиеНастройки(КомпоновщикНастроек);
	Настройки=КомпоновщикНастроек.ПолучитьНастройки();
	Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачПериода",НачалоДня(ТекущаяДата()));
	Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонПериода",КонецДня(ТекущаяДата()));
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
	Возврат КомпоновщикНастроек.ПользовательскиеНастройки;
КонецФункции

&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
	Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции
Показать
4. independ 1119 06.03.19 15:02 Сейчас в теме
Делал по примеру https://www.e-du.ru/2018/03/1c-open-ext-report.html\
Но у меня нет формы для отчета СКД, думаю как получить настройки из внешнего отчета типа
	ОтчетОбъект=Отчеты.Отчет1.Создать();
	КМ=ОтчетОбъект.КомпоновщикНастроек;
	Настройки=КМ.ПолучитьНастройки();
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачПериода", НачалоДня(ТекущаяДата()));
	Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонПериода", КонецДня(ТекущаяДата()));
    КМ.ЗагрузитьНастройки(Настройки);
5. singlych 06.03.19 15:24 Сейчас в теме
(4) Попробуй просто сунуть параметры в элементы пользовательских настроек, может проканает.
типа там

ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
ЭлементНастройки = ПользовательскиеНастройки.Элементы.Добавить(Тип("ПараметрКомпоновкиДанных"));
ЭлементНастройки.Использование = Истина;
ЭлементНастройки.Параметр = Новый ПараметрКомпоновкиДанных("НачПериода");
ЭлементНастройки.Значение = НачалоДня(ТекущаяДата());
6. independ 1119 06.03.19 15:57 Сейчас в теме
(5) Не взлетело, пришлось сделать по деревенски через ХранилищеОбщихНастроек, перед открытием отчета заполняю структуру параметров и помещаю в ХранилищеОбщихНастроек. В отчете в модуле объекта в процедуре ПриКомпоновкеРезультата читаю эту структуру параметров из ХранилищеОбщихНастроек, заполняю и т.д. и т.п.
Работает
7. toypaul 68 06.03.19 17:38 Сейчас в теме
(4) а если все-таки попробовать ПолучитьФорму? даже если ее нет ПолучитьФорму("ВнешнийОтчет.МойОтчет.Форма"). по идее должно "дать" автосегнеренную форму
independ; +1 Ответить
8. independ 1119 06.03.19 19:06 Сейчас в теме
(7) а из нее достучаться до Отчет.КомпоновщикНастроек.Настройки? Можно попробовать.
10. toypaul 68 07.03.19 07:54 Сейчас в теме
11. independ 1119 07.03.19 09:23 Сейчас в теме
Переделал без получения формы

&НаКлиенте
Процедура Расш_Остатки_ОтчетЧекиККИПосле(Команда)
	
	ВнешнийОтчетОбработкаДляОткрытияСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере("Отчет чеки ККМ УТ11");	
	
	ИмяОбработкиСлужебное = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка);
	
	ПараметрыФормы = Новый Структура;
	
	ПараметрыФормы.Вставить("КлючВарианта","Основной2");
	ПараметрыФормы.Вставить("СформироватьПриОткрытии",Истина);
	
	ПользовательскиеНастройки=ПолучитьПользовательскиеНастройки(ВнешнийОтчетОбработкаДляОткрытияСсылка);
	ПараметрыФормы.Вставить("ПользовательскиеНастройки",ПользовательскиеНастройки);
	
	ОткрытьФорму("ВнешнийОтчет." + ИмяОбработкиСлужебное + ".Форма",ПараметрыФормы, ЭтаФорма);
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
	Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции
	

&НаСервереБезКонтекста
Функция ПолучитьПользовательскиеНастройки(ВнешнийОтчетОбработкаДляОткрытияСсылка);
	КомпоновщикНастроек=ДополнительныеОтчетыИОбработкиВызовСерве­ра.ПолучитьОбъектВнешнейОбработки(ВнешнийОтчетОбработкаДляОткрытияСсылка).КомпоновщикНастроек;
	Настройки=КомпоновщикНастроек.ПолучитьНастройки();
	Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачПериода",НачалоДня(ТекущаяДата()));
	Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонПериода",КонецДня(ТекущаяДата()));
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
	Возврат КомпоновщикНастроек.ПользовательскиеНастройки;
КонецФункции
Показать
Cmapnep; TSSV; nekit_rdx; TuMyP1985; rpgshnik; v_den_v; Marliiin; arbeitenmail; golod; Volchock; specc87; ellavs; singlych; +13 Ответить
13. CMK0001 24.06.19 09:22 Сейчас в теме
(11) Огромное спасибо , редко когда нахожу инфу, которая нужна, просто копируя текст и все после этого работает .
14. golod 18.10.19 17:36 Сейчас в теме
Огромное спасибо, прямо то что надо!
15. parshin 71 17.04.20 09:43 Сейчас в теме
Спасибо, очень помогло!
Если у кого-то этот код не сработает, то обратите внимание чтобы параметры были включены в пользовательские настройки (Галка "Включать в пользовательские настройки").
23. German_Tagil 19 02.07.20 08:17 Сейчас в теме
(15) Спасибо за предупреждение - во вторник часа 2 убил прежде чем понял
16. German_Tagil 19 29.06.20 13:57 Сейчас в теме
Хорошо! А каким образом передать в отчет ссылку на документ из которого данный отчет вызывается (в отчете формы нет).
Суть проблемы. Вызываю из документа счетнаоплатупоставщика внешний отчет СКД - сформировал данные и хочу записать их в форму документа из которой они вызывались.
Отчет вызывается данные формируются а вот вернуть их обратно не получается.
Пока просто пишу в ДокЗаказ = Документы.Счетнаоплатупоставщика.СоздатьДокумент();
а хотелось бы вернуть данные сразу в открытый документ
17. independ 1119 29.06.20 14:20 Сейчас в теме
(16) т.е. отчет на СКД формирует некие данные, которые выведутся в табличный документ отчета - и их оттуда нужно получить?
18. German_Tagil 19 30.06.20 06:16 Сейчас в теме
(17) данные уже получены
формирую два источника данных табличный документ и ТЗ для записи
в отчете стоит признак выводить или нет
после того как пользователь понял что он все настроил и нужная инфа на экране
устанавливает приз формирует отчет и записывает ТЗ в документ
так вот каким образом получить форму документа из которой вызывался отчет?
остальное все сделано
19. independ 1119 30.06.20 07:19 Сейчас в теме
(18) ВладелецФормы в форме отчета
21. German_Tagil 19 30.06.20 11:45 Сейчас в теме
(19) Пытаюсь запустить и передать хотябы даты - не получается
отчет запускается но параметры не передаются
20. German_Tagil 19 30.06.20 09:53 Сейчас в теме
а формы нету...
Может быть возможно передать владелецформы.объект как параметр?
22. German_Tagil 19 30.06.20 13:26 Сейчас в теме
ну немного разобрался даты передаются
но вот что делать с владельцем формы?
24. KindLion 02.07.20 11:32 Сейчас в теме
Спасибо большое!
Помогли!
Оставьте свое сообщение
Вопросы с вознаграждением