Aktualizujte hodnotu finanční dimenze z kódu X++ v Dynamics 365
Vydáno: 16. února 2025 v 12:00:57 UTC
Tento článek vysvětluje, jak aktualizovat hodnotu finanční dimenze z kódu X++ v Dynamics 365, včetně příkladu kódu.
Update Financial Dimension Value from X++ Code in Dynamics 365
Informace v tomto příspěvku jsou založeny na Dynamics 365. Mělo by to fungovat i v Dynamics AX 2012, ale výslovně jsem to netestoval.
Nedávno jsem dostal za úkol aktualizovat hodnotu jedné finanční dimenze na základě nějaké logiky formuláře.
Jak pravděpodobně víte, od Dynamics AX 2012 jsou finanční dimenze uloženy v samostatných tabulkách a odkazují se na ně prostřednictvím RecId, obvykle v poli DefaultDimension.
Celý rámec pro manipulaci s rozměry je poněkud složitý a často se přistihnu, že k němu musím znovu číst dokumentaci, možná proto, že to není něco, s čím pracuji tak často.
Každopádně aktualizace pole v existující sadě dimenzí je něco, co se objevuje často, tak jsem si řekl, že napíšu svůj oblíbený recept ;-)
Statická obslužná metoda by mohla vypadat takto:
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;
}
Metoda vrací nové (nebo stejné) DimensionDefault RecId, takže pokud aktualizujete hodnotu dimenze pro záznam – což je pravděpodobně nejběžnější scénář – měli byste se ujistit, že aktualizujete pole dimenze na tomto záznamu novou hodnotou.