Dynamics AX Blog - Microsoft Dynamics AX (Axapta) - Seite 29

In den letzten Jahren, in denen ich mich fast hauptsächlich mit der Entwicklung im Umfeld von Microsoft Dynamics AX (vormals Axapta) beschäftigt habe, ist das eine oder andere Code-Fragment entstanden, von dem ich mir vorstellen könnte, daß es auch für andere AX-Entwickler ganz nützlich sein könnte. Aber auch Tips und Tricks zu dem mächtigen ERP-System werde ich in dieser Kategorie präsentieren.
RSS-Feed dieser KategorieAX 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)
|
AX 2012: SysOperation-Framework: Ein eigenes Formular als Dialog verwenden
07.12.2012Microsoft Dynamics AX (Axapta)
|
hasField()-MethodeIch hatte schon des öfteren die Situation, daß ich wissen wollte ob ein Datensatz ein bestimmtes Feld enthält um den jeweiligen Wert verarbeiten zu können. Beispielsweise innerhalb eine Methode, welche die aufrufenden args() verarbeitet. Beispielsweise stellt die Klasse SysDictTable die Methode hasMethod() zur Verfügung, eine hasField()-Methode aber habe ich bislang nicht gefunden. Deshalb habe ich mir folgende Logik überlegt: Common callingRecord; itemId itemId; SysDictField itemDictField; itemDictField = SysDictField::findFieldByName(tableId2name(callingRecord.TableId), identifierStr(itemId)); if(itemDictField) { itemId = callingRecord.(itemDictField.id()); } Wenn jemand eine elegantere Möglichkeit kennt, nur her damit! |
AX 2012: Formular immer in der Rasteransicht starten
11.11.2012Microsoft Dynamics AX (Axapta)
In AX 2012 gibt es zahlreiche Forms, wo man zwischen Detailansicht und Rasteransicht umschalten kann. Mit welcher Ansicht die Form öffnet, kann man beispielsweise am MenuItem über die Eigenschaft FormViewOption festlegen. Möchte man ein Formular allerdings immer in einer bestimmten Ansicht öffnen, kann man die init()-Methode beispielsweise wie folgt überschreiben: public void init() { element.args().formViewOption(FormViewOption::Grid); super(); } |
|
|
|
|
|
|
{
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");
}
}