Dynamics AX Blog - finanzdimensionen - Beiträge vom Februar 2014
Momentan angezeigt werden nur Beiträge, bei denen das Schlagwort »finanzdimensionen« eingetragen wurde. 

AX 2012: Finanzdimension auf Basis einer Formulareingabe eintragenOftmals hat man die Anforderung, daß auf Basis einer Eingabe in einem Formular auch eine bestimmte Finanzdimension eingetragen werden soll. Mit folgendem Code-Beispiel ist so etwas relativ einfach zu realisieren. Im Beispiel wird, wann immer ein bestimmtes Feld geändert wird - abgefragt über die Methode modified() des Feldes einer Datasource, die Finanzdimension Kostenstelle mit dem Wert 25 befüllt. Ist der einzutragende Wert ein ungültiger, passiert nichts (Fehlermeldung oder ähnliches).
public void modified()
{
DimensionAttribute DimensionAttribute = DimensionAttribute::findByName("Kostenstelle");
DimensionValue newValue = '25'; // New dimension value
super();
dimensionDefaultingController.setDimensionAttributeValue(
DimensionAttribute,
DimensionAttributeValue::findByDimensionAttributeAndValue(DimensionAttribute, newValue).RecId,
newValue);
}
Im Beispiel wird eine existierende Instanz von DimensionDefaultingController verwendet. |
|
|
|
|
|
|
Folgende Display-Methode in der Datasource einer Form zeigt beispielsweise die Finanzdimension Costcenter eines Debitoren an.
public display DimensionValue showCostCenter(CustTable _custTable) { DimensionAttributeValueSet dimensionAttributeValueSet; DimensionAttributeValueSetItem dimensionAttributeValueSetItem; DimensionAttributeValue dimensionAttributeValue; DimensionAttribute dimensionAttribute; #define.CostCenterDimensionName("CostCenter"); if( !_custTable || !_custTable.DefaultDimension) { return ''; } dimensionAttributeValueSet = DimensionAttributeValueSet::find(_custTable.DefaultDimension); select firstOnly RecId from dimensionAttributeValueSetItem where dimensionAttributeValueSetItem.DimensionAttributeValueSet == dimensionAttributeValueSet.RecId join DimensionAttributeValue where DimensionAttributeValue.RecId == dimensionAttributeValueSetItem.DimensionAttributeValue join RecId from dimensionAttribute where dimensionAttribute.RecId == DimensionAttributeValue.DimensionAttribute && dimensionAttribute.Name == #CostCenterDimensionName if(dimensionAttributeValue && dimensionAttribute) { return dimensionAttributeValue.getValue(); } return ''; }Einfachere Variante (siehe Kommentare)
public display DimensionValue showCostCenter(CustTable _custTable) { #define.CostCenterDimensionName("CostCenter"); return ((select firstOnly DisplayValue from DefaultDimensionView where DefaultDimensionView.Name == #CostCenterDimensionName && DefaultDimensionView.DefaultDimension == _custTable.DefaultDimension).DisplayValue); }