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

Momentan angezeigt werden nur Beiträge der Kategorie »Microsoft Dynamics AX (Axapta)« Filter entfernen

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 Kategorie

Word-Dokument per Code erstellen

Microsoft WordAnbei 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

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.

Screenshot

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 drucken

Mit 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

ScreenshotWenn 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.

  • filenameLookupFilter
  • filenameLookupInitialPath
  • fileNameLookupTitle
  • filenameLookupFilename

 
 

AX 2012: SysOperation-Framework: Ein eigenes Formular als Dialog verwenden

Das SysOperation-Framework generiert den Dialog für den Benutzer üblicherweise auf Basis des verwendeten Data Contracts vollautomatisch, bietet aber auch die Möglichkeit ein eigenes Formular als Dialog einzubinden.

Screenshot


 
 

hasField()-Methode

Ich 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

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();
}

 
 
Seiten « 1 ... 26 27 28 29 30 31 32 ... 52 » 

 

 
 
 
Beiträge des aktuellen Monats
April 2025
MoDiMiDoFrSaSo
 123456
78910111213
14151617181920
21222324252627
282930 
 
© 2006-2025 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu