Financiële dimensiewaarde bijwerken vanuit X++-code in Dynamics 365
Gepubliceerd: 16 februari 2025 om 12:01:24 UTC
In dit artikel wordt uitgelegd hoe u een financiële dimensiewaarde vanuit X++-code in Dynamics 365 bijwerkt, inclusief een codevoorbeeld.
Update Financial Dimension Value from X++ Code in Dynamics 365
De informatie in dit bericht is gebaseerd op Dynamics 365. Het zou ook moeten werken in Dynamics AX 2012, maar ik heb het niet expliciet getest.
Onlangs kreeg ik de opdracht om de waarde van een enkele financiële dimensie bij te werken op basis van een bepaalde vormlogica.
Zoals u waarschijnlijk weet, worden financiële dimensies in Dynamics AX 2012 opgeslagen in afzonderlijke tabellen en wordt ernaar verwezen via een RecId, meestal in een DefaultDimension-veld.
Het hele raamwerk voor het verwerken van dimensies is nogal complex en ik moet de documentatie er vaak opnieuw over lezen, misschien omdat ik er niet zo vaak mee werk.
Hoe dan ook, het bijwerken van een veld in een bestaande dimensieset is iets dat vaak voorkomt, dus ik dacht dat ik mijn favoriete recept maar eens zou beschrijven ;-)
Een statische hulpprogrammamethode zou er als volgt uit kunnen zien:
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;
}
De methode retourneert een nieuwe (of dezelfde) DimensionDefault RecId. Als u dus een dimensiewaarde voor een record bijwerkt (wat waarschijnlijk het meest voorkomende scenario is), moet u ervoor zorgen dat u het dimensieveld in die record bijwerkt met de nieuwe waarde.