1. independ 1088 06.03.19 13:36 Сейчас в теме

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата до 150 000 руб.
Полный день

Программист 1С
Екатеринбург
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Ведущий программист 1С
Москва
зарплата от 150 000 руб.
Полный день

Ведущий программист 1С (УТ 11)
Москва
зарплата до 200 000 руб.
Полный день