How to find Default Financial Dimensions (X++)
Hi, in this post i am goint to show you two ways of how to select default dimension values in AX 2012.
1) Traditional select codes: You can do a "while select" or just "select firstonly" for your needs. You can get all dimensions with "while select" and just one with the "select firstonly" as you know. But if you are going to use "select firstonly", you must specify the dimension attribute first.
Let's assume that you need to find the default financial dimensions of a specific customer record;
Select Firstonly:
Below code shows you the Dimension Attribute name and value of the selected customer.
While Select:
Below code shows you all the Dimension attribute names and values of the selected customer.
You can modify these queries for your needs. (For example, if you have Default Dimension RecId, you can delete custTable selection... etc.)
2) System classes: You can use system classes to find the default dimension values.
Below code finds the default dimension value with the help of the "DimensionAttributeValueSetStorage" class.
1) Traditional select codes: You can do a "while select" or just "select firstonly" for your needs. You can get all dimensions with "while select" and just one with the "select firstonly" as you know. But if you are going to use "select firstonly", you must specify the dimension attribute first.
Let's assume that you need to find the default financial dimensions of a specific customer record;
Select Firstonly:
Below code shows you the Dimension Attribute name and value of the selected customer.
CustTable custTable; DimensionAttributeValueSetItem DimensionAttributeValueSetItem; DimensionAttributeValue DimensionAttributeValue; DimensionAttribute DimensionAttribute; select firstonly custTable where custTable.AccountNum == "exampleCustAccountNum" //Selected your customer and so the default dimension join DimensionAttributeValueSetItem where DimensionAttributeValueSetItem.DimensionAttributeValueSet == custTable.DefaultDimension join DimensionAttributeValue where DimensionAttributeValue.RecId == DimensionAttributeValueSetItem.DimensionAttributeValue join DimensionAttribute where DimensionAttribute.RecId == DimensionAttributeValue.DimensionAttribute && DimensionAttribute.Name == "DimensionName"; //Specify the default dimension that you need from DimensionAttribute table { info(strFmt("%1--%2",DimensionAttribute.Name,DimensionAttributeValueSetItem.DisplayValue)); }
While Select:
Below code shows you all the Dimension attribute names and values of the selected customer.
CustTable custTable; DimensionAttributeValueSetItem DimensionAttributeValueSetItem; DimensionAttributeValue DimensionAttributeValue; DimensionAttribute DimensionAttribute; while select custTable where custTable.AccountNum == "exampleCustAccountNum" //Selected your customer and so the defautl dimension join DimensionAttributeValueSetItem where DimensionAttributeValueSetItem.DimensionAttributeValueSet == custTable.DefaultDimension join DimensionAttributeValue where DimensionAttributeValue.RecId == DimensionAttributeValueSetItem.DimensionAttributeValue join DimensionAttribute where DimensionAttribute.RecId == DimensionAttributeValue.DimensionAttribute { info(strFmt("%1--%2",DimensionAttribute.Name,DimensionAttributeValueSetItem.DisplayValue)); }
You can modify these queries for your needs. (For example, if you have Default Dimension RecId, you can delete custTable selection... etc.)
2) System classes: You can use system classes to find the default dimension values.
Below code finds the default dimension value with the help of the "DimensionAttributeValueSetStorage" class.
DimensionAttributeValueSetStorage dimStorage; ; dimStorage = DimensionAttributeValueSetStorage::find(DefaultDimRecId); //Send the Default Dimension Id info(dimStorage.getDisplayValueByDimensionAttribute(DimensionAttribute::findByName("DimensionName").RecId)); // Specify the Default Dimension Name
Comments
Post a Comment