Dynamics AX Blog - Dynamics AX 2012 - Beiträge von 2018

RSS-Feed dieser Version
Kostenstelle per Code anlegenWer mal in die Verlegenheit kommt, eine Kostenstelle per Code anlegen zu müssen, dem kann vielleicht dieser Job als Inspiration dienen: static void createCostCenter(Args _args) { str 30 _costCenter = "0815"; // Cost center id to create OMOperatingUnit omOperatingUnit; NumberSeqFormHandler numberSeqFormHandler; NumberSeq numberSeq; if (_costCenter) { if (!OMOperatingUnit::findName( _costCenter, OMOperatingUnitType::OMCostCenter)) { ttsbegin; numberSeq = NumberSeq::newGetNumFromId( OMOperatingUnit::getNumberSequenceReference().NumberSequenceId); omOperatingUnit.clear(); omOperatingUnit.initValue(); omOperatingUnit.omOperatingUnitNumber = numberSeq.num(); omOperatingUnit.Name = _costCenter; // Id used as name omOperatingUnit.NameAlias = _costCenter; omOperatingUnit.omOperatingUnitType = OMOperatingUnitType::OMCostCenter; omOperatingUnit.LanguageId = CompanyInfo::languageId(); if (omOperatingUnit.validateWrite()) { omOperatingUnit.insert(); } ttscommit; } } } |
SysOperation-Framework: Markierte Datensätze einer temporären Tabelle übergebenIm folgenden Szenario sollen an ein SysOperation-Konstrukt alle Datensätze einer temporären Tabelle übergeben werden. Dafür brauchen wir:
Controllerclass TutorialSysOperationController extends SysOperationServiceController { } |
Preisinformationen auf Positionen per Code eintragen und Preisfindung kontrollierenEine häufige Anforderung in Projekten ist es, daß Auftrags- oder Bestellpositionen durch irgendeine Programmlogik erstellt werden sollen, beispielsweise durch Datenimporte o.ä. Zuletzt hatte ich erstmalig die Anforderung, daß per Code generierten Auftragspositionen anschließend aber manuell bearbeitet werden sollen, wobei die Preisinformationen wie Verkaufspreis und -rabatt aber unbedingt erhalten bleiben sollten. Bearbeitet man in Dynamics AX aber bestimmte Felder einer Position, löst dies aber u.U. eine Preisfindung aus. Diese galt es also zu verhindern bzw. durch eine Abfrage den Benutzer zumindest davor hinzuweisen. Glücklicherweise gibt es eine solche Abfrage bereits, die über die folgenden Felder gesteuert wird:
| ||||||||
Zerlegen einer Zeichenkette mit fixen TrennzeichenDie nachstehenden Snippets sollen zeigen, wie man aus einem String mit fixen Trennzeichen die einzelnen Elemente extrahieren kann. Variante 1: Den String mithilfe der Funktion str2con() in einen Container umwandeln static void Job1(Args _args) { str paramAsStr = "Wert1@@Wert2@@Wert3"; container paramAsCon; int i; paramAsCon = str2con(paramAsStr, "@@"); for (i=1;i<=conLen(paramAsCon);i++) { info(conPeek(paramAsCon, i)); } } Variante 2: Den String unter Verwendung der Funktion strSplit() in eine List umzuwandeln static void Job1(Args _args) { str paramAsStr = "Value 1|Value 2|Value 3"; List paramAsList; ListEnumerator le; paramAsList = strSplit(paramAsStr, "|"); le = paramAsList.getEnumerator(); while(le.moveNext()) { info(le.current()); } }
|
Wellen für eine oder mehrere Lieferungen erstellenDas folgende Code-Schnipsel zeigt, wie man per Code Wellen und Arbeiten für eine oder mehrere Lieferungen erzeugen kann. Dies wird normalerweise auch aufgerufen, wenn man die Funktion "Für Lagerort freigeben" ausführt. WHSWaveTable::buildWaveFromShipments(['USMF-000006','USMF-000007']); |
Aktualisierung eines AX 2012 R3-VPCVor kurzem habe ich mein lokal installiertes AX 2012 R3 CU8 auf einen aktuelleren Programmstand bringen wollen. Dazu wird folgendes benötigt:
Nachstehend findet Ihr einige Screenshots sowie Anmerkungen die ich während der Aktualisierung gemacht habe. Anmeldung in LCS und Downloaden des Installers |
|
|
|
|
|
|
Solche Informationen kann man sich mit der Microsoft Dynamics AX 2012 Management Shell auslesen:
Das sieht wie folgt aus: