bcquality/microsoft/knowledge/reporting/report-output-in-a-loop-needs-one-client-download.good.al
Stefano Demiliani b545b22fb9
Add reporting review guidance and evaluation fixtures (#183)
* knowledge(performance): add job queue reliability guidance

* Address Job Queue review feedback

* Address Job Queue routing review feedback

* Encode job queue conflict in fixtures

* Add reporting review guidance and fixtures

* Fix reporting article reference
2026-09-15 10:38:32 +02:00

37 lines
No EOL
1.5 KiB
AL

codeunit 50106 "Download Customer Reports"
{
procedure DownloadReports(var Customer: Record Customer)
var
CustomerView: Record Customer;
CustomerList: Report "Customer - List";
DataCompression: Codeunit "Data Compression";
ReportTempBlob: Codeunit "Temp Blob";
ZipTempBlob: Codeunit "Temp Blob";
ReportInStream: InStream;
ZipInStream: InStream;
ReportOutStream: OutStream;
ZipOutStream: OutStream;
ZipFileName: Text;
begin
DataCompression.CreateZipArchive();
if Customer.FindSet() then
repeat
Clear(CustomerList);
Clear(ReportTempBlob);
CustomerView := Customer;
CustomerView.SetRecFilter();
CustomerList.SetTableView(CustomerView);
ReportTempBlob.CreateOutStream(ReportOutStream);
CustomerList.SaveAs('', ReportFormat::Pdf, ReportOutStream);
ReportTempBlob.CreateInStream(ReportInStream);
DataCompression.AddEntry(ReportInStream, Customer."No." + '.pdf');
until Customer.Next() = 0;
ZipTempBlob.CreateOutStream(ZipOutStream);
DataCompression.SaveZipArchive(ZipOutStream);
DataCompression.CloseZipArchive();
ZipTempBlob.CreateInStream(ZipInStream);
ZipFileName := 'CustomerReports.zip';
DownloadFromStream(ZipInStream, '', '', '*.zip', ZipFileName);
end;
}