Opdater økonomisk dimensionsværdi fra X++-kode i Dynamics 365
Udgivet: 16. februar 2025 kl. 12.00.58 UTC
Denne artikel forklarer, hvordan du opdaterer en økonomisk dimensionsværdi fra X++-kode i Dynamics 365, herunder et kodeeksempel.
Update Financial Dimension Value from X++ Code in Dynamics 365
Oplysningerne i dette indlæg er baseret på Dynamics 365. Det burde også virke i Dynamics AX 2012, men jeg har ikke eksplicit testet det.
Jeg fik for nylig til opgave at opdatere værdien af en enkelt finansiel dimension baseret på en formlogik.
Som du sikkert ved, er økonomiske dimensioner i Dynamics AX 2012 gemt i separate tabeller og refereret til gennem et RecId, normalt i et DefaultDimension-felt.
Hele rammen for håndtering af dimensioner er noget kompleks, og jeg oplever ofte, at jeg skal genlæse dokumentation om det, måske fordi det ikke er noget, jeg arbejder så tit med.
Anyway, opdatering af et felt i et eksisterende dimensionssæt er noget, der ofte dukker op, så jeg tænkte, at jeg ville skrive min yndlingsopskrift op ;-)
En statisk hjælpemetode kunne se sådan ud:
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 returnerer et nyt (eller det samme) DimensionDefault RecId, så hvis du opdaterer en dimensionsværdi for en post - hvilket nok er det mest almindelige scenarie - skal du sørge for at opdatere dimensionsfeltet på den post med den nye værdi.