28.12.2011, 19:11 | #1 |
Участник
|
sumitsaxfactor: Defaulting Financial Dimensions [AX 2012]
Источник: http://sumitsaxfactor.wordpress.com/...sions-ax-2012/
============== Next in the series of posts on Ledger dimensions and Financial dimensions is defaulting or setting the financial dimensions for any record. Suppose you have a requirement wherein you need to create a customer via code and default specific dimension (say Employee) to this record. In AX 2012 dimensions are not directly attached but the combination Record Id is stored. The name generally is DefaultDimension. This field points to a record in DimensionAttributeValueSet table. This table holds the combination of financial dimensions that a particular record is attached to. The combination is stored in DimensionAttributeValueSetItem table. The job below will help you in defaulting a dimension: I have put in enough comments to make the job self explanatory. This job will help you find / create a dimension combination record and get the record id to set. staticvoid setDefaultFinancialDimension(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; //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 DimensionAttributeValue dimAttrValue; // Contains used financial dimension values DimensionAttributeValueSet dimAttrValueSet; //Contains default dimension records DimensionAttributeValueSetItem dimAttrValueSetItem; //Contains individual records for default dimensions DimAttributeHcmWorker dimAttrWorker; //Backing entity view for Employee type dimension 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); //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, напишите личное сообщение администратору. |
|
|
|