Программное открытие отчета СКД без формы с передачей параметров
Застрял вроде бы на простом вопросе, есть отчет на СКД, помещенный в справочник Дополнительные отчеты и обработки, без формы
Открываю программно в расширении, нужно передать параметры НачПериода и КонПериода
Но параметры не заполняются. Предполагаю, что пользовательские настройки или настройки нужно получить из схемы компоновки
Открываю программно в расширении, нужно передать параметры НачПериода и КонПериода
&НаКлиенте
Процедура Расш_Остатки_ОтчетЧекиККИПосле(Команда)
ВнешнийОтчетОбработкаДляОткрытияСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере("Отчет чеки ККМ УТ11");
ИмяОбработкиСлужебное = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КлючВарианта","Основной2");
ПараметрыФормы.Вставить("СформироватьПриОткрытии",Истина);
ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("НачПериода", НачалоДня(ТекущаяДата()));
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КонПериода", КонецДня(ТекущаяДата()));
ПараметрыФормы.Вставить("ПользовательскиеНастройки",ПользовательскиеНастройки);
ОткрытьФорму("ВнешнийОтчет." + ИмяОбработкиСлужебное + ".Форма",ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции
ПоказатьНо параметры не заполняются. Предполагаю, что пользовательские настройки или настройки нужно получить из схемы компоновки
По теме из базы знаний
- Универсальный конструктор отчетов СКД (управляемые формы, тонкий клиент)
- Как программно открыть внешний отчет из "Дополнительных отчетов и обработок" и передать параметры (при помощи БСП)
- Расшифровка отчета на СКД с детализацией по выбранному полю на основе БСП
- Отчет на СКД с использованием форм из БСП. Варианты передачи списка значений в параметр СКД
- Запуск типового отчета "Расчетный листок" из справочника "Сотрудники" в 1С: ЗУП 3.1
Найденные решения
Переделал без получения формы
&НаКлиенте
Процедура Расш_Остатки_ОтчетЧекиККИПосле(Команда)
ВнешнийОтчетОбработкаДляОткрытияСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере("Отчет чеки ККМ УТ11");
ИмяОбработкиСлужебное = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КлючВарианта","Основной2");
ПараметрыФормы.Вставить("СформироватьПриОткрытии",Истина);
ПользовательскиеНастройки=ПолучитьПользовательскиеНастройки(ВнешнийОтчетОбработкаДляОткрытияСсылка);
ПараметрыФормы.Вставить("ПользовательскиеНастройки",ПользовательскиеНастройки);
ОткрытьФорму("ВнешнийОтчет." + ИмяОбработкиСлужебное + ".Форма",ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьПользовательскиеНастройки(ВнешнийОтчетОбработкаДляОткрытияСсылка);
КомпоновщикНастроек=ДополнительныеОтчетыИОбработкиВызовСерве ра.ПолучитьОбъектВнешнейОбработки(ВнешнийОтчетОбработкаДляОткрытияСсылка).КомпоновщикНастроек;
Настройки=КомпоновщикНастроек.ПолучитьНастройки();
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачПериода",НачалоДня(ТекущаяДата()));
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонПериода",КонецДня(ТекущаяДата()));
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
Возврат КомпоновщикНастроек.ПользовательскиеНастройки;
КонецФункции
Показать
tdml; mamba; Tolyas; Batman; lmp85; San sanych; user1671936; g_b; qpliz_andrew; timurkarimov; dseg; valkor; blandinko; cyegor; alekslis; assa; mongiilol; user830833; burgomister; zadoy; user847462; Mahon83; AnryMc; inspam; Dimony4; serverstar; Barney06; eeeio; vladir; Mihanic555; iiceberg; nightsun; GetNight; jane_de_rio; Cmapnep; TSSV; nekit_rdx; TuMyP1985; rpgshnik; v_den_v; Marliiin; arbeitenmail; golod; Volchock; specc87; ellavs; singlych;
+47
–
Ответить
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
почему в допсвойства, а не в элементы?
ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("НачПериода", НачалоДня(ТекущаяДата()));
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КонПериода", КонецДня(ТекущаяДата()));
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("НачПериода", НачалоДня(ТекущаяДата()));
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КонПериода", КонецДня(ТекущаяДата()));
почему в допсвойства, а не в элементы?
1. сформировать програмно СКД с установкой параметров (рекомендую) используя КомпоновщикНастроек
2. или как то так(не рекомендованно):
Отчет = ПолучитьИмяВнешнегоОбъекта("Отчет по серийным номерам");
ФормаОтчет = ПолучитьФорму("ВнешнийОтчет." + Отчет+ ".Форма.ФормаОтчета");
// установка параметров.
ФормаОтчет .Этаформа.Номенклатура = Объект.Номенклатура;
ФормаОтчет .Этаформа.СерийныеНомера = Объект.СерийныйНомер;
// запуск процедур
ФормаОтчет .ОбновитьСписокСН();
ФормаОтчет .СформироватьПоНоменклатуреНаСервере();
// открытие формы отчета.
ОткрытьФорму(ФормаОтчетПоСерийнымНомерам);
2. или как то так(не рекомендованно):
Отчет = ПолучитьИмяВнешнегоОбъекта("Отчет по серийным номерам");
ФормаОтчет = ПолучитьФорму("ВнешнийОтчет." + Отчет+ ".Форма.ФормаОтчета");
// установка параметров.
ФормаОтчет .Этаформа.Номенклатура = Объект.Номенклатура;
ФормаОтчет .Этаформа.СерийныеНомера = Объект.СерийныйНомер;
// запуск процедур
ФормаОтчет .ОбновитьСписокСН();
ФормаОтчет .СформироватьПоНоменклатуреНаСервере();
// открытие формы отчета.
ОткрытьФорму(ФормаОтчетПоСерийнымНомерам);
(2)
(7)
Заработало, получил форму отчета, далее Отчет.КомпоновщикНастроек, дальше дело техники, всем спасибо
(7)
Заработало, получил форму отчета, далее Отчет.КомпоновщикНастроек, дальше дело техники, всем спасибо
Процедура Расш_Остатки_ОтчетЧекиККИПосле(Команда)
ВнешнийОтчетОбработкаДляОткрытияСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере("Отчет чеки ККМ УТ11");
ИмяОбработкиСлужебное = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КлючВарианта","Основной2");
ПараметрыФормы.Вставить("СформироватьПриОткрытии",Истина);
Форма=ПолучитьФорму("ВнешнийОтчет." + ИмяОбработкиСлужебное + ".Форма");
ПользовательскиеНастройки=ПолучитьПользовательскиеНастройки(Форма.Отчет.КомпоновщикНастроек);
ПараметрыФормы.Вставить("ПользовательскиеНастройки",ПользовательскиеНастройки);
ОткрытьФорму("ВнешнийОтчет." + ИмяОбработкиСлужебное + ".Форма",ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьПользовательскиеНастройки(КомпоновщикНастроек);
Настройки=КомпоновщикНастроек.ПолучитьНастройки();
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачПериода",НачалоДня(ТекущаяДата()));
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонПериода",КонецДня(ТекущаяДата()));
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
Возврат КомпоновщикНастроек.ПользовательскиеНастройки;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции
Показать
Делал по примеру https://www.e-du.ru/2018/03/1c-open-ext-report.html\
Но у меня нет формы для отчета СКД, думаю как получить настройки из внешнего отчета типа
Но у меня нет формы для отчета СКД, думаю как получить настройки из внешнего отчета типа
ОтчетОбъект=Отчеты.Отчет1.Создать();
КМ=ОтчетОбъект.КомпоновщикНастроек;
Настройки=КМ.ПолучитьНастройки();
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачПериода", НачалоДня(ТекущаяДата()));
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонПериода", КонецДня(ТекущаяДата()));
КМ.ЗагрузитьНастройки(Настройки);
(4) Попробуй просто сунуть параметры в элементы пользовательских настроек, может проканает.
типа там
типа там
ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
ЭлементНастройки = ПользовательскиеНастройки.Элементы.Добавить(Тип("ПараметрКомпоновкиДанных"));
ЭлементНастройки.Использование = Истина;
ЭлементНастройки.Параметр = Новый ПараметрКомпоновкиДанных("НачПериода");
ЭлементНастройки.Значение = НачалоДня(ТекущаяДата());
(5) Не взлетело, пришлось сделать по деревенски через ХранилищеОбщихНастроек, перед открытием отчета заполняю структуру параметров и помещаю в ХранилищеОбщихНастроек. В отчете в модуле объекта в процедуре ПриКомпоновкеРезультата читаю эту структуру параметров из ХранилищеОбщихНастроек, заполняю и т.д. и т.п.
Работает
Работает
Переделал без получения формы
&НаКлиенте
Процедура Расш_Остатки_ОтчетЧекиККИПосле(Команда)
ВнешнийОтчетОбработкаДляОткрытияСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере("Отчет чеки ККМ УТ11");
ИмяОбработкиСлужебное = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КлючВарианта","Основной2");
ПараметрыФормы.Вставить("СформироватьПриОткрытии",Истина);
ПользовательскиеНастройки=ПолучитьПользовательскиеНастройки(ВнешнийОтчетОбработкаДляОткрытияСсылка);
ПараметрыФормы.Вставить("ПользовательскиеНастройки",ПользовательскиеНастройки);
ОткрытьФорму("ВнешнийОтчет." + ИмяОбработкиСлужебное + ".Форма",ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьПользовательскиеНастройки(ВнешнийОтчетОбработкаДляОткрытияСсылка);
КомпоновщикНастроек=ДополнительныеОтчетыИОбработкиВызовСерве ра.ПолучитьОбъектВнешнейОбработки(ВнешнийОтчетОбработкаДляОткрытияСсылка).КомпоновщикНастроек;
Настройки=КомпоновщикНастроек.ПолучитьНастройки();
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачПериода",НачалоДня(ТекущаяДата()));
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонПериода",КонецДня(ТекущаяДата()));
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
Возврат КомпоновщикНастроек.ПользовательскиеНастройки;
КонецФункции
Показать
tdml; mamba; Tolyas; Batman; lmp85; San sanych; user1671936; g_b; qpliz_andrew; timurkarimov; dseg; valkor; blandinko; cyegor; alekslis; assa; mongiilol; user830833; burgomister; zadoy; user847462; Mahon83; AnryMc; inspam; Dimony4; serverstar; Barney06; eeeio; vladir; Mihanic555; iiceberg; nightsun; GetNight; jane_de_rio; Cmapnep; TSSV; nekit_rdx; TuMyP1985; rpgshnik; v_den_v; Marliiin; arbeitenmail; golod; Volchock; specc87; ellavs; singlych;
+47
–
Ответить
(11) спасибо, сослалась на это решение в статье Как программно открыть внешний отчет из "Дополнительных отчетов и обработок" и передать параметры (при помощи БСП)
(11)
Метод объекта не обнаружен (ПолучитьОбъектВнешнейОбработки)
В Управление нашей фирмой, редакция 3.0 (3.0.2.112). Хотел как у Вас сделать.
КомпоновщикНастроек=ДополнительныеОтчетыИОбработкиВызовСервера.ПолучитьОбъектВнешнейОбработки(ВнешнийОтчетОбработкаДляОткрытияСсылка).КомпоновщикНастроек;
Метод объекта не обнаружен (ПолучитьОбъектВнешнейОбработки)
В Управление нашей фирмой, редакция 3.0 (3.0.2.112). Хотел как у Вас сделать.
Хорошо! А каким образом передать в отчет ссылку на документ из которого данный отчет вызывается (в отчете формы нет).
Суть проблемы. Вызываю из документа счетнаоплатупоставщика внешний отчет СКД - сформировал данные и хочу записать их в форму документа из которой они вызывались.
Отчет вызывается данные формируются а вот вернуть их обратно не получается.
Пока просто пишу в ДокЗаказ = Документы.Счетнаоплатупоставщика.СоздатьДокумент();
а хотелось бы вернуть данные сразу в открытый документ
Суть проблемы. Вызываю из документа счетнаоплатупоставщика внешний отчет СКД - сформировал данные и хочу записать их в форму документа из которой они вызывались.
Отчет вызывается данные формируются а вот вернуть их обратно не получается.
Пока просто пишу в ДокЗаказ = Документы.Счетнаоплатупоставщика.СоздатьДокумент();
а хотелось бы вернуть данные сразу в открытый документ
(17) данные уже получены
формирую два источника данных табличный документ и ТЗ для записи
в отчете стоит признак выводить или нет
после того как пользователь понял что он все настроил и нужная инфа на экране
устанавливает приз формирует отчет и записывает ТЗ в документ
так вот каким образом получить форму документа из которой вызывался отчет?
остальное все сделано
формирую два источника данных табличный документ и ТЗ для записи
в отчете стоит признак выводить или нет
после того как пользователь понял что он все настроил и нужная инфа на экране
устанавливает приз формирует отчет и записывает ТЗ в документ
так вот каким образом получить форму документа из которой вызывался отчет?
остальное все сделано
По программному открытию внешней обработки и внешнего отчёта есть универсальное решение на основе метода БСП:
Как программно открыть внешний отчет из "Дополнительных отчетов и обработок" и передать параметры (при помощи БСП)
Сделал рабочий код с текущим вариантом отчета:
Проверял работу на УТ 11.4
//Данные не передавал, стояла задача просто открыть отчет с текущим вариантом отчета.
Проверял работу на УТ 11.4
//Данные не передавал, стояла задача просто открыть отчет с текущим вариантом отчета.
&НаКлиенте
Процедура НеотгруженныеОрдера(Команда)
КомандаОткрытьВнешнийОтчет("\\192.168.0.3\Отчеты\Другие отчеты\НеотгруженныеОрдера.erf");
КонецПроцедуры
&НаКлиенте
Процедура КомандаОткрытьВнешнийОтчет(Путь)
ОписаниеОповещения = Новый ОписаниеОповещения("ПоместитьФайлВХранилищеЗавершениеОтчет", ЭтотОбъект);
НачатьПомещениеФайла(ОписаниеОповещения, , Путь, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПоместитьФайлВХранилищеЗавершениеОтчет(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
РезЗапроса = ПодключитьВнешнийОтчетНаСервереОтчет(Адрес);
ИмяОтчета = РезЗапроса.ИмяОтчета;
КлючВарианта = РезЗапроса.ВариантОтчета;
ПараметрыОткрытия = Новый Структура("КлючВарианта", КлючВарианта);
Уникальность ="ВнешнийОтчет." + ИмяОтчета;
ОткрытьФорму("ВнешнийОтчет." + ИмяОтчета + ".Форма", ПараметрыОткрытия, Неопределено, Уникальность)
КонецПроцедуры
&НаСервере
Функция ПодключитьВнешнийОтчетНаСервереОтчет(АдресХранилища)
результат = Новый Структура;
ИмяОтчета = ВнешниеОтчеты.Подключить(АдресХранилища);
ВариантыОтчета = ХранилищеВариантовОтчетов.ПолучитьСписок("Отчет."+ИмяОтчета);
КлючОбъекта = "ВнешнийОтчет."+ИмяОтчета+"/КлючТекущегоВарианта";
ВариантОтчета = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(КлючОбъекта, "");
Мт = ВариантыОтчета.НайтиПоЗначению(ВариантОтчета);
Если МТ <> Неопределено Тогда
ВариантОтчета = МТ.Представление;
КонецЕсли;
результат.Вставить("ИмяОтчета",ИмяОтчета);
результат.Вставить("ВариантОтчета",ВариантОтчета);
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьПользовательскиеНастройки(ВнешнийОтчетОбработкаДляОткрытияСсылка);
КомпоновщикНастроек=ДополнительныеОтчетыИОбработкиВызовСерве <wbr>ра.ОбъектВнешнейОбработки(ВнешнийОтчетОбработкаДляОткрытияСсылка).КомпоновщикНастроек;
Настройки=КомпоновщикНастроек.ПолучитьНастройки();
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачПериода",НачалоДня(ТекущаяДата()));
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонПериода",КонецДня(ТекущаяДата()));
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
Возврат КомпоновщикНастроек.ПользовательскиеНастройки;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот