Druckeinstellungen und Filterkriterien eines Reports vorbelegen
08.12.2010Microsoft Dynamics AX (Axapta)
|
Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2009
Dynamics AX 2009
ggf. besser die classFactory zur Initialisierung verwenden?! |
Danke Andi, Du hast natürlich recht. Ich habe deshalb meinen Beitrag entsprechend angepasst. |
|
|
|
|
|
|
In einem früheren Beitrag habe ich ja schon demonstriert, wie man einen Report in Dynamics AX per Code aufruft, und diesem dabei einen Query übergibt. Der folgende Code erweitert diesen Aufruf um die Druckeinstellungen (printJobSettings), sodaß es nun möglich ist, einen Report vollautomatisch mit vorgegebenen Filterkriterien und definierten Druckeinstellungen aus X++ heraus aufzurufen.
Im Beispiel wird der Standardbericht Cust verwendet, wobei nur Debitoren der Debitorengruppe 10 in eine PDF-Datei ausgegeben werden sollen.
{
ReportRun ReportRun = new ReportRun(new Args(ReportStr(Cust)));
printJobSettings printJobSettings = new printJobSettings();
;
// Modify Query
sysQuery::findOrCreateRange(ReportRun.query().dataSourceTable(tableNum(custTable)), fieldNum(custTable, custGroup)).value(queryValue('10'));
ReportRun.query().interactive(false);
// Create printJobSettings
printJobSettings.setTarget(PrintMedium::File);
printJobSettings.format(PrintFormat::PDF);
printJobSettings.fileName(@"C:\Temp\CustTableReport.pdf");
// Apply printJobSettings
ReportRun.printJobSettings(printJobsettings.packPrintJobSettings());
ReportRun.report().interactive(false); // Disable default printer-dialog
ReportRun.run();
}
Update 12.12.2010
Inspiriert von einem Kommentar von Andi habe ich obigen Job etwas abgewandelt und verwende nun die classFactory um den ReportRun zu instanzieren:
{
ReportRun ReportRun;
printJobSettings printJobSettings = new printJobSettings();
args args;
;
args = new args();
args.name(reportstr(Cust));
ReportRun = classFactory.reportRunClass(args);
// Modify Query
sysQuery::findOrCreateRange(ReportRun.query().dataSourceTable(tableNum(custTable)), fieldNum(custTable, custGroup)).value(queryValue('10'));
ReportRun.query().interactive(false);
// Create printJobSettings
printJobSettings.setTarget(PrintMedium::File);
printJobSettings.format(PrintFormat::PDF);
printJobSettings.fileName(@"C:\Temp\CustTableReport.pdf");
// Apply printJobSettings
ReportRun.printJobSettings(printJobsettings.packPrintJobSettings());
ReportRun.report().interactive(false); // Disable default printer-dialog
ReportRun.run();
}