BC21 mehrere Reports über eine Aktion drucken

13. Mai 2024 13:16

Hallo, ich will über einen Knopfdruck mehrere Reports, welche alle eine RequestPage besitzen, an den Drucker senden. Hat da jemand eine Idee, wie ich das umsetzen kann?

Re: BC21 mehrere Reports über eine Aktion drucken

13. Mai 2024 13:20

Wenn du einfach jeweils die Request Page unterdrücken willst dann kannst du im Aufruf UseRequestPage auf false setzen.
https://learn.microsoft.com/en-us/dynam ... e-property
https://learn.microsoft.com/en-us/dynam ... run-method

Re: BC21 mehrere Reports über eine Aktion drucken

13. Mai 2024 14:02

Ja, aber wenn ich da jetzt mehrere Reports nacheinander ausführe, dann druckt er immer nur den Letzten.

Re: BC21 mehrere Reports über eine Aktion drucken

13. Mai 2024 14:36

Testbeispiel zum Drucken von zwei Bestellungen. Hier ist 50002 der Report für Bestellungen. Request Page false und Systemdrucker true.
Code:
PurchaseHeader.SETRANGE("Document Type",PurchaseHeader."Document Type"::Order);
PurchaseHeader.SETRANGE("No.",'TESTBESTELLUNG1');
REPORT.RUN(50002,FALSE,TRUE,PurchaseHeader);
PurchaseHeader.SETRANGE("No.",'TESTBESTELLUNG2');
REPORT.RUN(50002,FALSE,TRUE,PurchaseHeader);

Ich habe hier im Beispiel. einfach mal zwei Bestellungen hintereinander gedruckt. Das funktioniert auch wenn du unterschiedliche Reports verwendest.

Re: BC21 mehrere Reports über eine Aktion drucken

13. Mai 2024 15:25

Okay, das funktioniert bei mir irgendwie nicht so ganz. Ich hatte es erst über PDF versucht und dort wurde halt immer nur der letzte Bericht ausgegeben. Dann hatte ich jetzt als Druckerauswahl den Drucker ausgewählt, aber auch dort wird nur der letzte Bericht gedruckt.

Re: BC21 mehrere Reports über eine Aktion drucken

13. Mai 2024 15:36

Zeig mal deinen Code, ich vermute du filterst den Datensatz den du in's REPORT.RUN reinreichst nicht korrekt. Mein Code ist übrigens aus NAV, dürfte aber in BC genauso funktionieren.
Mit REPORT.SAVEASPDF sollte es auch funktionieren, sinngemäß:
PurchaseOrderReport.SETTABLEVIEW(PurchaseHeader);
PurchaseOrderReport.USEREQUESTPAGE(FALSE);
PurchaseOrderReport.SAVEASPDF(FilePath);

Re: BC21 mehrere Reports über eine Aktion drucken

13. Mai 2024 16:08

Code:
action(PrintAll)
            {
                trigger OnAction()
                var
                    lProdOrder: Record "Production Order";
                begin
                    lProdOrder.SetRange(Status, Rec.Status);
                    lProdOrder.SetRange("No.", Rec."No.");
                    Report.Run(50159, false, true, lProdOrder);
                    Report.Run(50178, false, true, lProdOrder);
                    Report.Run(50170, false, true, lProdOrder);
                end;
            }


Also präferiert wäre auf jeden Fall das Drucken.

Re: BC21 mehrere Reports über eine Aktion drucken

13. Mai 2024 16:19

Hm, mir geht's wie dir, ich sehe den Fehler nicht...

Wenn du den Code auf jeweils eine Report.Run Zeile reduzierst dann funktioniert's für jeden der drei Reports? Die drei Reports haben jeweils Production Order auf der obersten Ebene so dass das übergeben der Rec Variable funktioniert?

Re: BC21 mehrere Reports über eine Aktion drucken

14. Mai 2024 07:40

https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/methods-auto/report/reportinstance-run-method

->
Internet browsers can only handle one file per request. Therefore, with the Web client, if this method is called in a repetitive statement (or loop) that generates multiple files, only the last file will be sent to the browser


versuch mal RunModal, anstatt Run
zwar steht in der Doku zu RunModal die gleiche Notiz, aber der Standard nutzt ja auch RunModal in der ReportSelection und vermutlich funktioniert es da (ich habe keinen Kunden, die mehr als einen Bericht für den gleichen Datensatz in der Berichtsauswahl hinterlegt haben)