30.01.2012, 17:11 | #1 |
Участник
|
sumitsaxfactor: Replacing Financial Dimension in Ledger Dimension–Version 2 [AX 2012]
Источник: http://sumitsaxfactor.wordpress.com/...ion-2-ax-2012/
============== Friends, I had posted one article on replacing financial dimensions within a ledger dimension sometime back. The job there was big and endless. I did some more research and was able to condense it a bit. Here is the modified job: staticvoid replaceLedgerDimensions1(Args _args) { #LedgerSHA1Hash DimensionSHA1Hash hash; //To store the calculated hash for DimensionAttributeValueSet HashKey valueKeyHashArray[]; //To store the has key of dimension in question Map dimAttrIdx, dimAttrRecId; //to store the dimension index and backing entity type DimensionAttributeSetItem dimAttrSetItem; // Contains the number of dimensions active for a account structure ledger DimensionAttribute dimAttr; // Contains the financial dimensions records DimAttributeHcmWorker dimAttrWorker; //Backing entity view for Employee type dimension DimensionAttributeValue dimAttrValue; // Contains used financial dimension values DimensionAttributeValueSet dimAttrValueSet; //Contains default dimension records DimensionAttributeValueSetItem dimAttrValueSetItem; //Contains individual records for default dimensions LedgerDimensionAccount sourceDimension = 5637145829, targetDimension; //Record Id DimensionAttributeValueCombination table in which attribute value is to be replaced DimensionDefault sourceDefDimension, targetDefDimension; //To hold the default dimension combination from a Ledger dimension LedgerDimensionDefaultAccount defaultLedgerAccount; DimensionEnumeration dimensionSetId; //Record id for table that contains active dimensions for current ledger 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); } //initialize hash key array to null <span><font face="Consolas"><font size="2"> for (i = 1<font color="#000000">; i
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
|