Wednesday, September 23, 2015

How to get Next RecId through X++

Below piece of code can be used to retrieve next record Id from the table.

static void getNextRecId(Args _args)
{
    //Table that stores record ids details for tables
    SystemSequences systemSequences;

    //Class that handles Record id generation
    SystemSequence systemSequence = new SystemSequence();
    ;

    info(strFmt("%1", tableNum(SalesTable)));  
   
    systemSequence.suspendRecIds(tableNum(SalesTable));
    info(strFmt("Next record id: %1", systemSequence.reserveValues(1,tableNum(SalesTable))));
    systemSequence.removeRecIdSuspension(tableNum(SalesTable));
}


Tuesday, September 15, 2015

Lifecycle issue search directly from AX 2012 R3

AX 2012 R3 comes with new feature of searching any issue, if there is any, against each AOT object.

Let's take example of SalesTable table and try to lookup issues reported for this object in LCS.


It will redirect you LCS site, and requires Partner or Customer source Id to log in.


It lists the total number of issues against SalesTable table along with all hotfixes information.

Tuesday, September 1, 2015

PostLoad() method in AX tables

Today I found an interesting thing with regards to AX tables and this post is all about this new experience which is the PostLoad() method in AX tables.

When we create a new table in AOT, Morphx automatically creates a series of methods for it. We cannot see those methods but those can be overriden on each table as per requirements. PostLoad() is one of these system methods. List of all system methods can be seen from

Lets create a new table, I named it PostLoadTable with two fields Name and Value.



I added 5 records in the table manually (open table and added).

Tables in Microsoft Dynamics AX have a number of system-defined methods, such as insert, validateField,validateWrite. For a list of these methods, see the xRecord system class. The xRecord class can be seen as the base class for the Common table. The Common table can be seen as the base table for all tables.

In any table class, the body of each system-defined method contains only a call to super(). When you edit the X++ code in a table method, you override the parent's implementation of that method. Usually the call to super() must remain in the methods that you edit.

PostLoad() is the method that is used to read records from database and you can perform any custom logic by overriding this method on any table.

Let’s override this method and play around it

public void postLoad()
{
    super();

    if (this.Name == 'MEL')
        this.Value = 5;
}

By opening table again it shows me different result as compared to what we entered earlier as shown above.



Value for name MEL changes from 1 to 5 and I did not require to call update method.

There are many existing implementation of postLoad method in AX tables, I am listing few of them here for ease.

HCMWorkerTable\postLoad()
VendTrans\PostLoad()
CustTrans\PostLoad()