Dynamics AX Blog - Page 21
Print text-document using X++Below you'll find a example, how to print a Text-document using X++. static void printTextFileFromAX(Args _args) { WinAPI::shellExecute("c:\windows\system32\NOTEPAD.EXE", @'/pt "c: emp est.txt" "An OneNote 2010 senden"'); } Note: "An OneNote 2010 senden" is the name of the printer. |
Open a modal formTo call a modal form, the following code could be used (in clicked()-method of a button): void clicked() { FormRun formRun; Args args = new Args(); super(); args.name(formStr(MyFormName)); args.record(SalesLine); formRun = classFactory::formRunClassOnClient(Args); formRun.init(); formRun.run(); If (!formRun.closed()) { formRun.wait(true); } } Using this code, nearly every form could be opened in a modal way, so you have to close the form first before you will be able to return to AX. |
Open form through codeBelow you find some examples, how to open a form through code. Each example has it's own Advantages and disadvantages, but i think there is an example available for the most Scenarios. static void openFormThroughCode_0(Args _args)
{ menuFunction menuFunction; args args; CustTable custTable = CustTable::find('1101'); args = new args(); args.record(CustTable); args.formViewOption(FormViewOption::Grid); menuFunction::runClient(identifierStr(custTable), MenuItemType::Display, false, args); }
static void openFormThroughCode_I(Args _args)
{ FormRun formRun; args args = new args(); args.name(formstr(CustTable)); args.formViewOption(FormViewOption::Grid); formRun = classFactory.formRunClass(args); formRun.run(); formRun.wait(); } |
Searching for menu items nameIn Dynamics AX there is no way to search about a menu items name. So i've created a job, which creates the ability to do so. |
How to use labels contaning line breaks in infologSome labels containe line breaks ( ). If you want to use such label in infolog, you should use the function strFmtLB: // Wrong info(strFmt("@SYS322576", "AccountsPayableServices", "Allgemeiner Fehler")); // Correct info(strFmtLB(strFmt("@SYS322576", "AccountsPayableServices", "Allgemeiner Fehler"))); |
AX 2012: Print document through codeWith the following job you can reprint an order confirmation by code and have it output as a PDF file. With the help of similarly named classes such as the SalesConfirmJournalPrint used here, it should also be possible to reprint other documents such as invoices or delivery notes. static void printSalesConfirmThroughCode(Args _args) { SalesConfirmJournalPrint SalesConfirmJournalPrint; set set = new set(Types::Record); SRSPrintDestinationSettings SRSPrintDestinationSettings; // Add record set.add(CustConfirmJour::findRecId(5637150827)); // Set printer settings SRSPrintDestinationSettings = new SRSPrintDestinationSettings(); SRSPrintDestinationSettings.fileFormat( SRSReportFileFormat::PDF); SRSPrintDestinationSettings.fileName(@'c:ab.pdf'); SRSPrintDestinationSettings.printMediumType( SRSPrintMediumType::File); SRSPrintDestinationSettings.numberOfCopies(1); SRSPrintDestinationSettings.overwriteFile(true); // Initalize SalesConfirmJournalPrint = SalesConfirmJournalPrint::construct(); SalesConfirmJournalPrint.parmPrintFormletter(NoYes::Yes); SalesConfirmJournalPrint.parmUsePrintManagement(false); SalesConfirmJournalPrint.parmPrinterSettingsFormLetter( SRSPrintDestinationSettings.pack()); // Print SalesConfirmJournalPrint.printJournal(set); } |
|
|
|
|
|
|
In a lot of forms of type Detailspage you see an area, which looks like in following screenshot .
This area is mostly build using the - as far as i know undocumented - method titleFields(). This method returns a string of 60 characters.