Dynamics AX Blog - Microsoft Dynamics AX (Axapta) - Page 18

In recent years, i spent a lot of time in developing in the environment of Microsoft Dynamics AX (formerly Axapta). During this time i created a lot of code, from which I could imagine, that it might be very useful for other AX developers too. But I will present also tips and tricks round the powerful ERP system.
Subscribe to RSS feed of this categoryAX 2012: Show RecId of type LedgerDimension as Display valueIn the following code-example a record is selected from table LedgerJournalTrans, than the value of the field LedgerDimension respectively the field OffsetLedgerDimension is converted in the display value, which is display in a so called Segemented entry control. static void GetLedgerDimensionDisplayValue(Args _args) { DimensionStorage dimensionStorage; DimensionDisplayValue DimensionDisplayValue; ledgerJournalTrans ledgerJournalTrans = LedgerJournalTrans::findRecId(5637169330, false); // LedgerDimension dimensionStorage = DimensionStorage::findById(ledgerJournalTrans.LedgerDimension); DimensionDisplayValue = dimensionStorage.getComboDisplayValue(); info(DimensionDisplayValue); // OffsetLedgerDimension dimensionStorage = DimensionStorage::findById(ledgerJournalTrans.OffsetLedgerDimension); DimensionDisplayValue = dimensionStorage.getComboDisplayValue(); info(DimensionDisplayValue); } Output for example: |
AX 2012: Determine whether a form is a list pageWith the following piece of code you can determine whether a form is a list page. static void isFormListPage(Args _args)
{ TreeNode treeNode; str formTemplateProperty; #Properties; treeNode = TreeNode::findNode(@"\\Forms\\CustTableListPage"); formTemplateProperty = global::findProperty(treeNode.AOTgetProperties(), #PropertyFormTemplate); if(formTemplateProperty == #PropertyValueListPage) { warning("Form is ListPage"); } } If anyone knows a better/more elegant solution, so I would be happy, if he or she contributes via the comment function. |
How to measure the execution time of a function?Using the function timeConsumed you can check the execution time of a function: static void stopWatch(Args _args)
{ FromTime fromTime = timeNow(); Counter c; // Simulating time consuming function for (c=1;c<=100;c++) { sleep(1000); } info(strFmt("Total time consumed: %1", timeConsumed(fromTime, timeNow()))); } Result in the Infolog: |
Add object nodes to a shared project through codeFind below a short example, how to add object nodes to a shared project through code. static void AddNodeToSharedProject(Args _args)
{ projectNode projectNode; TreeNode treeNode; #AOT #AOTExport projectNode = infolog.projectRootNode(); projectNode = projectNode.AOTfindChild(#expProjectShared); projectNode = projectNode.AOTfindChild('MyProject'); // Add objects treenode = TreeNode::findNode(#TablesPath+'\\'+tableid2name(tablenum(CustGroup))); projectNode.addNode(treenode); treenode = TreeNode::findNode(#TablesPath+'\\'+tableid2name(tablenum(VendGroup))); projectNode.addNode(treenode); treenode = TreeNode::findNode(#ClassesPath+'\\'+classStr(PriceDisc)); projectNode.addNode(treenode); } The so modified Project will look like this: |
Loop through values of a Base enumSysDictEnum SysDictEnum = new SysDictEnum(enumNum(SalesStatus)); int i; for (i=0;i<SysDictEnum.values();i++) { info(SysDictEnum.index2Label(i)); } |
SQL-Error occurs when opening or synchronizing a tableIf the follwoing error occurs, when opening or synchronizing a - mostly new created - table
the reason could be, that the table contains a field, whose name is a "reserved word" from the database, For example, you cannot use Primary as field Name. |
|
|
|
|
|
|
A short code example how to can create records in a table very performant way using RecordInsertList. Who does not know RecordInsertList, can learn more about here.