Uppdatera Financial Dimension Value från X++ Code i Dynamics 365
Publicerad: 16 februari 2025 kl. 12:01:37 UTC
Den här artikeln förklarar hur du uppdaterar ett ekonomiskt dimensionsvärde från X++-kod i Dynamics 365, inklusive ett kodexempel.
Update Financial Dimension Value from X++ Code in Dynamics 365
Informationen i det här inlägget är baserad på Dynamics 365. Det ska även fungera i Dynamics AX 2012, men jag har inte uttryckligen testat det.
Jag fick nyligen i uppdrag att uppdatera värdet av en enda finansiell dimension baserat på någon formlogik.
Som du säkert vet, eftersom Dynamics AX 2012 finansiella dimensioner lagras i separata tabeller och refereras till genom ett RecId, vanligtvis i ett DefaultDimension-fält.
Hela ramverket för att hantera dimensioner är något komplext och jag kommer ofta på mig själv med att behöva läsa dokumentation om det igen, kanske för att det inte är något jag jobbar med så ofta.
Hur som helst, att uppdatera ett fält i en befintlig dimensionsuppsättning är något som dyker upp ofta, så jag tänkte skriva upp mitt favoritrecept ;-)
En statisk verktygsmetod kan se ut så här:
Name _dimensionName,
DimensionValue _dimensionValue)
{
DimensionAttribute dimAttribute;
DimensionAttributeValue dimAttributeValue;
DimensionAttributeValueSetStorage dimStorage;
DimensionDefault ret;
;
ret = _defaultDimension;
ttsbegin;
dimStorage = DimensionAttributeValueSetStorage::find(_defaultDimension);
dimAttribute = DimensionAttribute::findByName(_dimensionName);
if (_dimensionValue)
{
dimAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue( dimAttribute,
_dimensionValue,
true,
true);
dimStorage.addItem(dimAttributeValue);
}
else
{
dimStorage.removeDimensionAttribute(dimAttribute.RecId);
}
ret = dimStorage.save();
ttscommit;
return ret;
}
Metoden returnerar en ny (eller samma) DimensionDefault RecId, så om du uppdaterar ett dimensionsvärde för en post - vilket förmodligen är det vanligaste scenariot - bör du se till att uppdatera dimensionsfältet på den posten med det nya värdet.