Home > DynamicsAx Utilities > Dimension (Field Value) Search Utility in Dynamics Ax

Dimension (Field Value) Search Utility in Dynamics Ax


In recent days, I got a specific requirement…

At our place, finance controller has decided to close one dimension value and need to replace the same with new dimension value.

To support this, we need to update all the transactions which have old dimension value, to new one.

Assume all the transactions, which are created Dimension [10] – Business unit with value 201, need to update as 203

static void ininspar_Dimension201_Update_Alltables(Args _args)
{
    TreeNode                tn,fn;
    TreeNodeIterator        tni,fni,_tni;
    Str                     objName;
    SysDictField            sysDictField;
    Common                  common;
    Query                   query = new Query();
    QueryBuildDataSource    qbs;
    QueryBuildRange         qbr;
    TableId                 mTableId;
    QueryRun                qr;
    ;

    tn = TreeNode::findNode(“\\Data Dictionary\\Tables”);
    tni = tn.AOTiterator();
    tn = tni.next();

    while (tn)
    {
        objName = tn.treeNodeName();

        tn = tni.next();

        mTableId = tableName2id(objName);
        sysDictField = new SysDictField(mTableId, fieldname2id(mTableId, “Dimension”));  // Finding table object which have Dimension field

        if (sysDictField && Global::hasTableAccess(mTableId))
        {
            //info(objname);
            try
            {
                qbs = query.addDataSource(mTableId);
                qbr = qbs.addRange(fieldId2Ext(fieldname2id(mTableId, “Dimension”),10));   // using Dimension[10] in query range
                qbr.value(“201”);

                qr = new QueryRun(query);
                while (qr.next())
                {

                    common = qr.get(mTableId);
                    if (common.RecId)
                    {
                        common.selectForUpdate(true);
                        ttsbegin;
                        common.(fieldId2Ext(fieldname2id(mTableId, “Dimension”),10)) = “203”; //assigning the Dimension[10] value by using Common
                        common.update();
                        ttscommit;
                        info(strfmt(“%1 %2”,objName, int2str(common.RecId)));
                    }
                }
            }
            catch(Exception::Error)
            {
                continue;
            }

        }
    }
}

 

With this, we can write some Advanced Search utilities, to find specific values for some fields for the tables.

Advertisements
Categories: DynamicsAx Utilities
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: