Отчет на СКД в составе внешней обработки
Доброго дня, и здоровья тем кто работает по ночам!
Есть интересная задача, решение которой я пока не нашел. Нужно вывести отчет на СКД в отдельном окне, вызвав данный отчет из формы внешней обработки. СКД отчета сохранена в макетах обработки, сам отчет в конфигурации и Справочнике "Дополнительные отчеты и обработки" не зарегистрирован.
Есть интересная задача, решение которой я пока не нашел. Нужно вывести отчет на СКД в отдельном окне, вызвав данный отчет из формы внешней обработки. СКД отчета сохранена в макетах обработки, сам отчет в конфигурации и Справочнике "Дополнительные отчеты и обработки" не зарегистрирован.
По теме из базы знаний
- 1с8.2-8.3.Вывод на экран данных запроса с переданными Параметрами из Документа! 8 различных вариантов:от Сообщений, Таблицы и Отчетов до СКД без объекта-отчета
- Разбиваем отчет на СКД на отдельные табличные документы, потом склеиваем "на лету"
- По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета
- Отчеты по товарам и материалам для 1С Бухгалтерии 3.0
- Любите СКД так, как люблю ее я
Найденные решения
(15)
Рабочий пример в прикреплении.
Код модуля внешнего отчета:
Код модуля формы обработки:
Тогда да, имхо, не взлетит.
Почему же, у меня работает. С отладкой придётся заморочиться, но ПриКомпоновкеРезультата внешнего отчета выполняется.
Рабочий пример в прикреплении.
Код модуля внешнего отчета:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Сообщить("Привет!");
КонецПроцедуры
Процедура ОпределитьНастройкиФормы(Контекст, КлючВарианта, НастройкиОтчета) Экспорт
КонецПроцедуры
Код модуля формы обработки:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ДвоичныеДанныеОтчета = ОбработкаОбъект.ПолучитьМакет("Отчет");
АдресВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеОтчета, УникальныйИдентификатор);
ИмяОтчета = ВнешниеОтчеты.Подключить(АдресВХранилище,, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьОтчет(Команда)
ОткрытьФорму("ВнешнийОтчет." + ИмяОтчета + ".ФормаОбъекта",, ЭтотОбъект);
КонецПроцедуры
ПоказатьПрикрепленные файлы:
ВнешняяОбработка1.epf

Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)В составе конфигурации, как минимум БП 3.0, в ОбщихФормах есть объект "ФормаОтчета", она собственно и используется для вывода результатов отчетов без собственной формы. В том числе отчетов на СКД зарегистрированных в справочнике "Дополнительные отчеты и обработки"(далее сДОиО). Хочу вывести в отдельное окно(Форму) результаты своего отчета, не имеющего аналога в конфигурации и не зарегистрированного в сДОиО. В данный отчет из обработки будут передаваться параметры отборов и т.д.
(7)"Дьявол кроется в мелочах", как говорится. Мне не нужно использовать дополнительные внешние объекты. Мне нужно использовать только объекты обработки и объекты конфигурации и, хотелось-бы чтоб их было как можно меньше. Т.е. создать доп.форму в обработке для вывода результата отчета не проблема, вопрос в том, как обойтись без ее(доп.формы).
может я что-то не понял нужно вызвать может что-то такое подойдет ?
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
//Помещаем обработку во временном хранилище
АдресХранилища = "";
Результат = ПоместитьФайл(АдресХранилища, "C:\ВнешняяОбработка.epf", , Ложь);
ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
// Откроем форму подключенной внешней обработки
ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма");
КонецПроцедуры
&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)
Возврат ВнешниеОбработки.Подключить(АдресХранилища);
КонецФункции
Показать
Как вариант, можно сделать полноценный внешний отчет (erf файл) и затолкать его в макет обработки в виде двоичных данных.
Подключить его соответствующим методом и обращаться к нему из любого места по имени.
Подключить его соответствующим методом и обращаться к нему из любого места по имени.
Всем доброго дня!
Подскажите, правильно-ли я понял следующую зависимость: если во внешнем отчете нет своей формы - то платформа выдает "во временное пользование" Общую форму "Форма отчета" и как следствие про процедуру Модуля объекта (внешней обработки) ПриКомпоновкеРезультата() придется забыть?
Подскажите, правильно-ли я понял следующую зависимость: если во внешнем отчете нет своей формы - то платформа выдает "во временное пользование" Общую форму "Форма отчета" и как следствие про процедуру Модуля объекта (внешней обработки) ПриКомпоновкеРезультата() придется забыть?
(15)
Рабочий пример в прикреплении.
Код модуля внешнего отчета:
Код модуля формы обработки:
Тогда да, имхо, не взлетит.
Почему же, у меня работает. С отладкой придётся заморочиться, но ПриКомпоновкеРезультата внешнего отчета выполняется.
Рабочий пример в прикреплении.
Код модуля внешнего отчета:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Сообщить("Привет!");
КонецПроцедуры
Процедура ОпределитьНастройкиФормы(Контекст, КлючВарианта, НастройкиОтчета) Экспорт
КонецПроцедуры
Код модуля формы обработки:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ДвоичныеДанныеОтчета = ОбработкаОбъект.ПолучитьМакет("Отчет");
АдресВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеОтчета, УникальныйИдентификатор);
ИмяОтчета = ВнешниеОтчеты.Подключить(АдресВХранилище,, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьОтчет(Команда)
ОткрытьФорму("ВнешнийОтчет." + ИмяОтчета + ".ФормаОбъекта",, ЭтотОбъект);
КонецПроцедуры
ПоказатьПрикрепленные файлы:
ВнешняяОбработка1.epf

(16)Получилось! Спасибо за помощь. Просто отладчик проходил мимо процедуры Модуля отчета "ПриСозданииНаСервере", с отладкой кода этой процедуры пришлось заморочиться.
Я так понимаю, что приводит к временной регистрации отчета на время текущего сеанса или пока открыть окно обработки (в моем случае). Можно-ли найти этот отчет через "Функции для технического специалиста"?
Я так понимаю, что
ИмяОтчета = ВнешниеОтчеты.Подключить(АдресВХранилище,, Ложь);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот