Dynamics AX Blog - Page 18

These posts are machine-translated.

AX 2012: How to create a company in Global address book throgh code

Using the following job you will be able to create a organization in the global address book of Dynamics AX 2012.

Please be aware, that a minimum of fields will be used and the so-called Record type has the value of "Organization".

 

static void createOrganization(Args _args)
{
    AxDirOrganization axDirOrganization;

    axDirOrganization = AxDirOrganization::construct();
    axDirOrganization.validateInput(true);
    axDirOrganization.continueOnError(true);  // Validate fields without stopping error

    axDirOrganization.parmName(           'Name of Organization');
    axDirOrganization.parmNameAlias(      'Namealias');
    axDirOrganization.parmLanguageId(     'de-at');
    axDirOrganization.parmPartyNumber(    '100000');

    axDirOrganization.save();
}

 
 

Example of how to use RecordInsertList

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.

static void HowToUseRecordInsertList(Args _args)
{
    DMOPerfTest DMOPerfTest;
    RecordInsertList RecordInsertList;
    Counter c;
    FromTime fromTime = timeNow();
    
    RecordInsertList = new RecordInsertList(tableNum(DMOPerfTest));
    
    for (c=1;c<=10000;c++)
    {
        DMOPerfTest.clear();    
        DMOPerfTest.AccountNum = int2str(c);
        
        if(DMOPerfTest.validateWrite())
        {
            RecordInsertList.add(DMOPerfTest);
        }
    }
    
    RecordInsertList.insertDatabase();
    
    info(strFmt("Total time consumed: %1", timeConsumed(fromTime, timeNow())));
}

 
 

AX 2012: Show RecId of type LedgerDimension as Display value

In 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:
5170-10-00AB03---1500-
 


 
 

AX 2012: Determine whether a form is a list page

With 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:
Total time consumed: 1 Minute 41 Sekunden


 
 

Add object nodes to a shared project through code

Find 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:

Screenshot


 
 

Loop through values of a Base enum

SysDictEnum SysDictEnum = new SysDictEnum(enumNum(SalesStatus));
int i;

for (i=0;i<SysDictEnum.values();i++)
{
    info(SysDictEnum.index2Label(i));
}

 
 
Pages « 1 ... 15 16 17 18 19 20 21 ... 24 » 

 

 
 
 
Posts of the actual month
April 2024
MoTuWeThFrSaSu
1234567
891011121314
15161718192021
22232425262728
2930 
 
© 2006-2024 Heinz Schweda | Imprint | Contact | German version | Mobile version
In order to provide you with better service, this site uses cookies. By continuing to browse the site, you are agreeing to our use of cookies.