18.01.2012, 11:11 | #1 |
Участник
|
sumitsaxfactor: Replace a Financial Dimension in Default Dimensions [AX 2012]
Источник: http://sumitsaxfactor.wordpress.com/...sions-ax-2012/
============== In my earlier post, I had explained how we can set financial dimensions. In this post, I will provide a job by which we can replace one attribute value in a combination of financial dimensions. The class that we can use is the DimensionDefaultingService and method to use is “serviceReplaceAttributeValue”. For this purpose, we will use the following combination taken from a customer record. In this financial dimensions, we will replace value if worker from “114” to “51011”. The job below will be helpful for you to see how this can be achieved. staticvoid replaceDefaultDimensions(Args _args) { CustTable custTable = CustTable::find(‘CUS-00004′); //Customer Record containing Financial Dimension DimensionSHA1Hash hash; //To store the calculated hash for DimensionAttributeValueSet DimensionAttribute dimAttr; // Contains the financial dimensions records DimAttributeHcmWorker dimAttrWorker; //Backing entity view for Employee type dimension DimensionDefault defaultDimension; DimensionEnumeration dimensionSetId; //Record id for table that contains active dimensions for current ledger DimensionAttributeValue dimAttrValue; // Contains used financial dimension values DimensionAttributeValueSet dimAttrValueSet; //Contains default dimension records DimensionAttributeValueSetItem dimAttrValueSetItem; //Contains individual records for default dimensions DimensionAttributeSetItem dimAttrSetItem; // Contains the number of dimensions active for a account structure ledger HashKey valueKeyHashArray[]; //To store the has key of dimension in question Map dimAttrIdx, dimAttrRecId; //to store the dimension index and backing entity type int dimAttrCount, i; int emplBackEntityType; //Stores the backing entity type for Employee type dimension //The employee backing entity will be the view DimAttributeHcmWorker emplBackEntityType = tableNum(DimAttributeHcmWorker); //Initialize the map to store the backing entity types dimAttrIdx = new Map(Types::Integer, Types::Integer); dimAttrRecId = new Map(Types::Integer, Types::Int64); //Get the record Id (dimension set id) for current ledger to find active dimensions dimensionSetId = DimensionCache::getDimensionAttributeSetForLedger(); //Find all the active dimensions for current ledger except main account and store there //backing entity type in the map whileselect * from dimAttr orderby Name where dimAttr.Type != DimensionAttributeType::MainAccount join RecId from dimAttrSetItem where dimAttrSetItem.DimensionAttribute == dimAttr.RecId && dimAttrSetItem.DimensionAttributeSet == dimensionSetId { dimAttrCount++; dimAttrIdx.insert(dimAttr.BackingEntityType, dimAttrCount); dimAttrRecId.insert(dimAttr.BackingEntityType, dimAttr.RecId); } //Get the backing entity type for the dimension value to process selectfirstOnly dimAttrWorker where dimAttrWorker.Value == "51011"; //initialize hash key array to null <span><font face="Consolas"><font size="2"> for (i = 1<font color="#000000">; i
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
|