![]() |
#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, напишите личное сообщение администратору. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|