Erstellen einer Entität - beispielsweise eines Debitoren - per Code unter Verwendung von AX<Table>-Klassen

Folgender Job soll veranschaulichen, wie man unter Verwendung von sog. AX<Table>-Klassen Entitäten in Dynamics AX per Code anlegen kann, ohne dabei - wie in diesem Beitrag beschrieben - direkt in die Tabellen zu schreiben.

Solche AX<Table>-Klassen stehen bereits für zahlreiche Tabellen von Haus aus zu Verfügung und es ist möglich, sich jederzeit für weitere Tabellen solche Klassen generieren zu lassen (siehe hier).

Vorteile:

  • Pflichtfelder werden geprüft
  • Datensatz wird initalisiert (d.h. die initValue() wird aufgerufen)
  • Feldinhalten werden geprüft

Nachteile:

  • Bei Feldänderung wird die Logik in der modifiedField() nicht aufgerufen
static void CreateCustomerAXClass(Args _args)
{
    AxCustTable axCustTable;
    AxDirPartyTable AxDirPartyTable;
    CustTable CustTable;
    DirPartyTable DirPartyTable;

    AccountNum accountNum     = "4711";
    Name name                 = "Debitor 4711";
    currencyCode currencyCode = "EUR";
    custGroupId custGroupId   = "DINL";
    taxGroup taxGroup         = "DINL";
    languageId languageId     = "de-AT";

    ttsBegin;

    // Create or update Customer
    axCustTable = axCustTable::construct();
    axCustTable.validateInput(true);    
    axCustTable.continueOnError(true);  // Validate fields without stopping error
    
    CustTable = CustTable::find(accountNum, true);
    if(CustTable)
    {
        axCustTable.custTable(CustTable);   // Don't use this for new records to get initValue() called
    }

    axCustTable.parmAccountNum(accountNum);
    axCustTable.parmCustGroup(custGroupId);
    axCustTable.parmTaxGroup(taxGroup);
    axCustTable.parmCurrency(currencyCode);
    
    axCustTable.save();

    // Create or update Global address book
    AxDirPartyTable = AxDirPartyTable::construct();
    AxDirPartyTable.validateInput(true);
    AxDirPartyTable.continueOnError(true);  // Validate fields without stopping error
    
    DirPartyTable = DirPartyTable::findRec(axCustTable.custTable().Party, true);
    if(DirPartyTable)
    {
        AxDirPartyTable.dirPartyTable(DirPartyTable);
    }

    AxDirPartyTable.parmName(name);
    AxDirPartyTable.parmLanguageId(languageId);
    
    AxDirPartyTable.save();

    ttsCommit;
}
Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012

Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
März 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
25262728293031
 
© 2006-2024 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