Отчет на СКД в составе внешней обработки

1. silverr 13 27.01.23 10:34 Сейчас в теме
Доброго дня, и здоровья тем кто работает по ночам!
Есть интересная задача, решение которой я пока не нашел. Нужно вывести отчет на СКД в отдельном окне, вызвав данный отчет из формы внешней обработки. СКД отчета сохранена в макетах обработки, сам отчет в конфигурации и Справочнике "Дополнительные отчеты и обработки" не зарегистрирован.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
16. SlavaKron 01.02.23 19:24 Сейчас в теме +1 $m
(15)
Тогда да, имхо, не взлетит.
Почему же, у меня работает. С отладкой придётся заморочиться, но ПриКомпоновкеРезультата внешнего отчета выполняется.
Рабочий пример в прикреплении.
Код модуля внешнего отчета:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	Сообщить("Привет!");
КонецПроцедуры

Процедура ОпределитьНастройкиФормы(Контекст, КлючВарианта, НастройкиОтчета) Экспорт
	
КонецПроцедуры

Код модуля формы обработки:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	ДвоичныеДанныеОтчета = ОбработкаОбъект.ПолучитьМакет("Отчет");
	
	АдресВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеОтчета, УникальныйИдентификатор);
	
	ИмяОтчета = ВнешниеОтчеты.Подключить(АдресВХранилище,, Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьОтчет(Команда)
	ОткрытьФорму("ВнешнийОтчет." + ИмяОтчета + ".ФормаОбъекта",, ЭтотОбъект);
КонецПроцедуры
Показать
Прикрепленные файлы:
ВнешняяОбработка1.epf
kuzev; silverr; +2 Ответить
10. SlavaKron 27.01.23 15:50 Сейчас в теме +1 $m
Как вариант, можно сделать полноценный внешний отчет (erf файл) и затолкать его в макет обработки в виде двоичных данных.
Подключить его соответствующим методом и обращаться к нему из любого места по имени.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 27.01.23 10:49 Сейчас в теме
(1) Нужно открыть именно типовую форму отчета? Если да, то не получится, так как потребуется объект отчета. Вывести просто в табличный документ в отдельном окне – не проблема.
3. silverr 13 27.01.23 11:03 Сейчас в теме
(2)В составе конфигурации, как минимум БП 3.0, в ОбщихФормах есть объект "ФормаОтчета", она собственно и используется для вывода результатов отчетов без собственной формы. В том числе отчетов на СКД зарегистрированных в справочнике "Дополнительные отчеты и обработки"(далее сДОиО). Хочу вывести в отдельное окно(Форму) результаты своего отчета, не имеющего аналога в конфигурации и не зарегистрированного в сДОиО. В данный отчет из обработки будут передаваться параметры отборов и т.д.
5. SlavaKron 27.01.23 11:16 Сейчас в теме
(3) Правильно, но так как самого отчета нет (схема – это не отчет), то использовать БСП-шную "ФормаОтчета" не получится.
6. silverr 13 27.01.23 11:22 Сейчас в теме
(5)По коду так и понял, что БСПшная форма слишком часто(помимо передаваемых параметров) обращается к отчету как к объекту за свойствами и т.д. Отсюда печальный вывод - придется в обработке городить еще одну форму и ряд функций и процедур к ней.
4. silverr 13 27.01.23 11:11 Сейчас в теме
(2)Еще добавлю, что вывод результатов своего отчета на страничку обработки, открытие в новом(отдельном) окне отчета из конфигурации уже реализовано.
7. DENSKR 16 27.01.23 11:47 Сейчас в теме
(4) Вот по этой Ссылке возможно найдете именно то что вам нужно
8. silverr 13 27.01.23 12:45 Сейчас в теме
(7)"Дьявол кроется в мелочах", как говорится. Мне не нужно использовать дополнительные внешние объекты. Мне нужно использовать только объекты обработки и объекты конфигурации и, хотелось-бы чтоб их было как можно меньше. Т.е. создать доп.форму в обработке для вывода результата отчета не проблема, вопрос в том, как обойтись без ее(доп.формы).
9. vadim1011985 102 27.01.23 14:13 Сейчас в теме
может я что-то не понял нужно вызвать может что-то такое подойдет ?

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

    //Помещаем обработку во временном хранилище
    АдресХранилища = "";
    Результат = ПоместитьФайл(АдресХранилища, "C:\ВнешняяОбработка.epf", , Ложь);           
    ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
    
    // Откроем форму подключенной внешней обработки
    ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма");

КонецПроцедуры

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)

    Возврат ВнешниеОбработки.Подключить(АдресХранилища);

КонецФункции  
Показать
10. SlavaKron 27.01.23 15:50 Сейчас в теме +1 $m
Как вариант, можно сделать полноценный внешний отчет (erf файл) и затолкать его в макет обработки в виде двоичных данных.
Подключить его соответствующим методом и обращаться к нему из любого места по имени.
11. silverr 13 28.01.23 09:39 Сейчас в теме
(10) Наверно так и придется сделать, надо еще погуглить на эту тему.
12. silverr 13 01.02.23 16:07 Сейчас в теме
Всем доброго дня!
Подскажите, правильно-ли я понял следующую зависимость: если во внешнем отчете нет своей формы - то платформа выдает "во временное пользование" Общую форму "Форма отчета" и как следствие про процедуру Модуля объекта (внешней обработки) ПриКомпоновкеРезультата() придется забыть?
13. kuzev 48 01.02.23 16:37 Сейчас в теме
(12)
если во внешнем отчете нет своей формы - то платформа выдает "во временное пользование" Общую форму "Форма отчета"
- да
как следствие про процедуру Модуля объекта (внешней обработки) ПриКомпоновкеРезультата() придется забыть
- нет
14. silverr 13 01.02.23 17:02 Сейчас в теме
(13)почему-то не цепляет, проходит мимо?
15. kuzev 48 01.02.23 17:13 Сейчас в теме
(14) Вы пишете то внешний отчет, то внешняя обработка. Что у Вас в итоге? Внешняя обработка запускает внешний отчет, который из макета? Тогда да, имхо, не взлетит.
16. SlavaKron 01.02.23 19:24 Сейчас в теме +1 $m
(15)
Тогда да, имхо, не взлетит.
Почему же, у меня работает. С отладкой придётся заморочиться, но ПриКомпоновкеРезультата внешнего отчета выполняется.
Рабочий пример в прикреплении.
Код модуля внешнего отчета:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	Сообщить("Привет!");
КонецПроцедуры

Процедура ОпределитьНастройкиФормы(Контекст, КлючВарианта, НастройкиОтчета) Экспорт
	
КонецПроцедуры

Код модуля формы обработки:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	ДвоичныеДанныеОтчета = ОбработкаОбъект.ПолучитьМакет("Отчет");
	
	АдресВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеОтчета, УникальныйИдентификатор);
	
	ИмяОтчета = ВнешниеОтчеты.Подключить(АдресВХранилище,, Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьОтчет(Команда)
	ОткрытьФорму("ВнешнийОтчет." + ИмяОтчета + ".ФормаОбъекта",, ЭтотОбъект);
КонецПроцедуры
Показать
Прикрепленные файлы:
ВнешняяОбработка1.epf
kuzev; silverr; +2 Ответить
19. silverr 13 06.02.23 15:38 Сейчас в теме
(16)Получилось! Спасибо за помощь. Просто отладчик проходил мимо процедуры Модуля отчета "ПриСозданииНаСервере", с отладкой кода этой процедуры пришлось заморочиться.
Я так понимаю, что
ИмяОтчета = ВнешниеОтчеты.Подключить(АдресВХранилище,, Ложь);
приводит к временной регистрации отчета на время текущего сеанса или пока открыть окно обработки (в моем случае). Можно-ли найти этот отчет через "Функции для технического специалиста"?
20. SlavaKron 07.02.23 10:22 Сейчас в теме
(19) Да, отчет регистрируется на время текущего сеанса и от обработки никак не зависит.
Можно-ли найти этот отчет через "Функции для технического специалиста"?
Нет, это же не встроенный отчет.
17. silverr 13 01.02.23 20:05 Сейчас в теме
(13) Отчет вызывается из обработки, а в 12 посте я действительно перепутал.
18. silverr 13 01.02.23 20:13 Сейчас в теме
(16) Спасибо, завтра с утра ознакомлюсь и займусь реализацией своих замыслов. Процедура "ПриКомпоновкеРезультата" нужна для передачи ТЗ для заполнения Набора данных - объект СКД.
Оставьте свое сообщение

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