Источник:
http://sumitsaxfactor.wordpress.com/...ensed-ax-2012/
==============
In my previous post on Replacing default dimensions, I had provided a job to replace one financial dimension within a default dimension. The job was pretty big and I always thought that Microsoft should have provided some way to do these operations easily. Luckily I found a class that has helped me to condense that job and make it pretty small. I am sharing that job here:
The dimensions for Customer record looks like this before running the job:
Here is the job to change the values. We will change the values for Business Unit, Department and Worker all with this simple job:
staticvoid replaceDefaultDimensionsCondense(Args _args)
{
/*
* In this job, we will replace the Business Unit Value from BU-001 to BU-002
* and fill in the values for Department as Dep-001 and Worker as 114
*/
CustTable custTable = CustTable::find(‘CUS-00004′); //Customer Record containing Financial Dimension
Struct struct = new Struct(); //Structure to hold the dimension values to replace
container defDimensionCon; //Container to prepare the required values and dimension attribute combination
DimensionDefault dimensionDefault; //Get the replaced dimension recid
DimensionAttributeSetItem dimAttrSetItem; //Table to get active dimensions for the legal entity
DimensionAttribute dimAttribute; //Table to get the Financial dimensions
int i; //For looping
//Loop for required dimensions
whileselect Name, BackingEntityType from dimAttribute
where dimAttribute.BackingEntityType == tableNum(DimAttributeOMBusinessUnit) ||
dimAttribute.BackingEntityType == tableNum(DimAttributeOMDepartment) ||
dimAttribute.BackingEntityType == tableNum(DimAttributeHcmWorker) &&
dimAttribute.Type != DimensionAttributeType::DynamicAccount
join dimAttrSetItem
where dimAttrSetItem.DimensionAttribute == dimAttribute.RecId &&
dimAttrSetItem.DimensionAttributeSet == DimensionCache::getDimensionAttributeSetForLedger()
{
//Add the Dimension name and display value to struct
if (dimAttribute.BackingEntityType == tableNum(DimAttributeOMBusinessUnit))
{
struct.add(dimAttribute.Name, ‘BU-002′);
}
elseif (dimAttribute.BackingEntityType == tableNum(DimAttributeOMDepartment))
{
struct.add(dimAttribute.Name, ‘DEP-002′);
}
elseif (dimAttribute.BackingEntityType == tableNum(DimAttributeHcmWorker))
{
struct.add(dimAttribute.Name, ’114′);
}
}
//Prepare the container
defDimensionCon += struct.fields();
<span><font face="Consolas"><font size="2">
for (i = 1<font color="#000000">; i