Dynamics AX Blog - Seite 29
Suche nach MenüeinträgenWer sich so wie ich schon häufig darüber geärgert hat, daß es in Dynamics AX keine Möglichkeit gibt, nach Menüeinträgen zu suchen, dem hilft vielleicht folgender Job. |
Labels mit Zeilenumbrüchen korrekt ausgebenManche Labels enthalten Zeilenumbrüche (\n). Möchte man ein solches Label über das Infolog ausgeben, sollte man die Funktion strFmtLB wie folgt verwenden: // Wrong info(strFmt("@SYS322576", "AccountsPayableServices", "Allgemeiner Fehler")); // Correct info(strFmtLB(strFmt("@SYS322576", "AccountsPayableServices", "Allgemeiner Fehler"))); |
Word-Dokument per Code erstellen
19.02.2013Microsoft Dynamics AX (Axapta)
Anbei ein einfach gehaltener Job, der ein einfaches, mehrzeiliges Word-Dokument per Code erstellt. Voraussetzung ist ein lokal installiertes Microsoft Word. static void CreateWordFile(Args _args) { COM wordApplication; COM wordDocuments; COM wordDocument; COM wordSelection; Filename fileName = @"c:\temp\HelloWorld.doc"; int i; try { wordApplication = new COM("word.application"); wordApplication.visible(false); wordDocuments = wordApplication.Documents(); wordDocument = wordDocuments.add(); wordDocument.saveas(fileName); wordDocument.activate(); for (i=1; i<=5; i++) { wordSelection = wordApplication.selection(); wordSelection.TypeText(int2str(i) + " Hello World!"); wordSelection.TypeParagraph(); } wordDocument.save(); wordDocument.close(); wordApplication.quit(); info(strFmt("Datei %1 wurde erstellt.", fileName)); } catch { if(wordDocument) { wordDocument.close(); wordApplication.quit(); } error("Fehler"); } } |
AX 2012: Lookup auf das Globale Adressbuch erstellen
15.02.2013Microsoft Dynamics AX (Axapta)
Szenario: Auf einer Tabelle wurde ein neues Feld vom EDT DirPartyRecId eingefügt. In der Tabelle selbst dürfen aber nur Parteien mit bestimmten Rollen eingetragen werden (im konkreten Fall nur Debitoren). Dennoch soll der Standard-Lookup der DirPartyTable verwendet werden. Lösung: In der DataSource des betroffenen Formulares - im Beispiel ist dies die Tabelle SMAServiceObjectTable - auf dem neuen Feld die Methode lookupReference überschreiben |
AX 2012: Dokument per Code druckenMit dem folgenden Job kann man per Code eine Auftragsbestätigung nachdrucken und diese dabei als PDF-Datei ausgeben lassen. Mit Hilfe von ähnlich benannten Klassen wie der hier verwendeten SalesConfirmJournalPrint sollten auch andere Dokumente wie Rechnung oder Lieferschein nachdruckbar sein. 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); } |
AX 2012: SysOperation-Framework: FileName-Methoden einbinden
23.12.2012Microsoft Dynamics AX (Axapta)
Wenn man in früheren Versionen von Dynamics AX eine Klasse auf Basis des RunBase-Frameworks im Einsatz hatte und dabei in einem Dialog ein Feld für einen Dateienamen verwendet hat, konnte man über spezielle filename...()-Methoden beispielsweise die gewünschte Dateierweiterung oder den Speicherort steuern.
|
|
|
|
|
|
|
In Dynamics AX 2012 gibt es - wie auch schon in früheren Versionen - mehrere Möglichkeiten E-Mails zu versenden.
Eine recht komfortable und bekannte Möglichkeit bietet die Tabelle SysOutgoingEmailTable und die dazugehörige Klasse SysEmailDistributor. Diese Tabelle ist über den Client unter Systemverwaltung > Periodisch > E-Mail-Verarbeitung > E-Mail-Sendestatus einsehbar.
Die Verarbeitung dieser Datensätze wird unter Systemverwaltung > Periodisch > E-Mail-Verarbeitung > Stapel initiert und setzt voraus, daß die E-Mail-Parameter unter Systemverwaltung > Einstellungen > System entsprechend gepflegt sind.
Weniger bekannt ist, daß es über dieses Framework auch möglich ist, Mails mit Attachements zu verschicken. Dazu muss eine weitere Tabelle namens SysOutgoingEmailData entsprechend befüllt werden.
Im folgenden nun ein kurzer Job, der demonstriert, wie diese Tabellen per Code befüllt werden.