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
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
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:
Nachteile:
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; }