Dynamics AX Blog - Dynamics AX 2009 - Beiträge von 2010 - Seite 4

RSS-Feed dieser Version
Start- und Enddatum des aktuellen Geschäftsjahres ermitteln
01.05.2010Microsoft Dynamics AX (Axapta)
|
Shared Project mit X++ erstellen
17.04.2010Microsoft Dynamics AX (Axapta)
Nachstehend ein Beispiel, mit dem man in Dynamics AX 2009 per X++ ein Projekt erstellen, und Elemente zu diesem Projekt hinzufügen kann. static void CreateSharedProject(Args _args)
{ projectNode projectNode; projectGroupNode projectGroupNode; projectNode myProjectNode; treeNodeName nameOfProject; groupNodeType groupNodeType; treeNodeName groupNodeName; #AOT ; nameOfProject = 'MyProject'; // Create shared project projectNode = infolog.projectRootNode(); projectNode = projectNode.AOTfindChild('Shared'); myProjectNode = projectNode.AOTfindChild(nameOfProject); if( !myProjectNode) { myProjectNode = projectNode.AOTadd(nameOfProject); myProjectNode.AOTsave(); } myProjectNode = myProjectNode.getRunNode(); // Add groupnode 'Tables' groupNodeName = 'Tables'; projectGroupNode = myProjectNode.AOTfindChild(groupNodeName); if( !projectGroupNode) { myProjectNode.AOTadd(groupNodeName); projectGroupNode = myProjectNode.AOTfindChild(groupNodeName); projectGroupNode.projectGroupType(GroupNodeType::Tables); myProjectNode.AOTsave(); } // Add some tables to groupnode 'Tables' if( !projectGroupNode.findGroupMember('SalesTable', UtilElementType::Table)) { projectGroupNode.addUtilNode(UtilElementType::Table, 'SalesTable'); } if( !projectGroupNode.findGroupMember('SalesLine', UtilElementType::Table)) { projectGroupNode.addUtilNode(UtilElementType::Table, 'SalesLine'); } projectGroupNode.AOTsave(); // Add groupnode 'Forms' groupNodeName = 'Forms'; projectGroupNode = myProjectNode.AOTfindChild(groupNodeName); if( !projectGroupNode) { myProjectNode.AOTadd(groupNodeName); projectGroupNode = myProjectNode.AOTfindChild(groupNodeName); projectGroupNode.projectGroupType(GroupNodeType::Forms); myProjectNode.AOTsave(); } // Add form 'SalesTable' to groupnode 'Forms' if( !projectGroupNode.findGroupMember('SalesTable', UtilElementType::Form)) { projectGroupNode.addUtilNode(UtilElementType::Form, 'SalesTable'); } projectGroupNode.AOTsave(); myProjectNode.AOTsave(); myProjectNode.AOTrefresh(); myProjectNode.AOTrun(); } Das im Beispiel erstellte Projekt sähe wie folgt aus:
|
Zugriff auf die Zwischenablage per X++
26.03.2010Microsoft Dynamics AX (Axapta)
In Dynamics AX kann man selbstverständlich auch auf die Zwischenablage zugreifen, ein kurzes Codebeispiel dazu im folgenden. Funktioniert übrigens zumindest seit Axpata 2.5. static void useClipboard(Args _args) { textBuffer textBuffer = new textBuffer(); ; // Write to clipboard textBuffer.appendText('Hello world!'); textBuffer.toClipboard(); // Read from clipboard textBuffer.fromClipboard(); info(textBuffer.getText()); } |
Buchen von Lieferschein und Rechnung per Code
19.03.2010Microsoft Dynamics AX (Axapta)
Mit Hilfe der salesFormLetter-Klasse(n) von Dynamics AX ist es möglich, Auftragsbestätigung, Lieferschein und/oder Rechnung für einen Auftrag mit nur wenigen Zeilen Code zu buchen. Nachstehend ein Beispiel, in dem für einen Auftrag alle drei auf einmal gebucht werden: static void postSalesFormLetter(Args _args)
{ SalesFormLetter salesFormLetter; salesTable salesTable = salesTable::find('01234'); ; ttsBegin; // Bestätigung buchen salesFormLetter = SalesFormLetter::construct(DocumentStatus::Confirmation); salesFormLetter.update( salesTable, systemDateGet(), SalesUpdate::All, AccountOrder::None, NoYes::No, NoYes::No); // Lieferschein buchen salesFormLetter = SalesFormLetter::construct(DocumentStatus::PackingSlip); salesFormLetter.update( salesTable, systemDateGet(), SalesUpdate::All, AccountOrder::None, NoYes::No, NoYes::No); // Rechnung buchen salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice); salesFormLetter.update( salesTable, systemDateGet(), SalesUpdate::All, AccountOrder::None, NoYes::No, NoYes::No); ttsCommit; } Getestet in Dynamics AX 2009. |
Notizen zur RecId
04.03.2010Microsoft Dynamics AX (Axapta)
Die RecId ist die mehr oder weniger eindeutige Kennung eines Datensatzes in Dynamics AX. Mehr oder weniger deshalb, weil es auf die verwendete Version von Dynamics AX bzw. Axapta ankommt:
| ||||||||||
Unterschied zwischen update und doUpdate u.ä.Mir persönlich dreht sich ja immer der Magen um, wenn ich in einer Produktivumgebung einen Stückchen Code mit doUpdate() oder Konsorten entdecke, trotzdem verwende ich solcherart Methoden auch gerne für den einen oder anderen Aktualisierungsjob. Wer den Unterschied zwischen dem Aufruf von update() und doUpdate() nicht kennt, kann diesen in der MSDN nachlesen...oder aber auch in der nachstehenden Tabelle.
| ||||||||
Eintrag "Einstellungen" im Kontextmenü freischalten
04.02.2010Microsoft Dynamics AX (Axapta)
Wie man diesen Eintrag über die Berechtigungsverwaltung von Dynamics AX entfernt oder hinzufügt, wusste ich allerdings bis dato nicht. Erst ein Request beim Hersteller, den ein Kollege abgesetzt hat, hat mich auf die richtige Spur gebracht: Unter Sicherheit / Verwaltung / Sonstiges / Fomular "Personalisierung" muss man die Berechtigung auf mindestens "Bearbeiten" setzen, damit der Eintrag im Kontextmenü aufscheint. Und jetzt erklär mir mal einer, wie man das selbst finden soll... |
|
|
|
|
|
|

Jeder Entwickler kennt ihn und die meisten benutzen ihn auch regelmässig: Den Eintrag "Einstellungen" im Kontextmenü eines Formulares.
Um das Start- und Enddatum des aktuellen Geschäftsjahres zu ermitteln, kann man sich nachstehender Methode bedienen. Diese liefert einen Container zurück, dessen erstes Element das Start- und dessen zweites Element das Enddatum des Geschäftsjahres enthält.