Aktualizuj wartość wymiaru finansowego z kodu X++ w Dynamics 365
Opublikowano: 16 lutego 2025 12:01:27 UTC
W tym artykule wyjaśniono, jak zaktualizować wartość wymiaru finansowego z kodu X++ w usłudze Dynamics 365, podając także przykład kodu.
Update Financial Dimension Value from X++ Code in Dynamics 365
Informacje w tym poście odnoszą się do Dynamics 365. Powinno to również działać w Dynamics AX 2012, ale nie testowałem tego bezpośrednio.
Niedawno powierzono mi zadanie zaktualizowania wartości jednego wymiaru finansowego w oparciu o pewną formę logiczną.
Jak prawdopodobnie wiesz, w systemie Dynamics AX 2012 wymiary finansowe są przechowywane w oddzielnych tabelach i odwoływane za pomocą RecId, zwykle w polu DefaultDimension.
Cały system obsługi wymiarów jest dość skomplikowany i często muszę ponownie przeczytać dokumentację, być może dlatego, że nie pracuję z tym zbyt często.
Tak czy inaczej, aktualizacja pola w istniejącym zestawie wymiarów to coś, co zdarza się często, więc pomyślałem, że napiszę o moim ulubionym przepisie ;-)
Metoda statyczna może wyglądać następująco:
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 zwraca nowy (lub ten sam) identyfikator DimensionDefault RecId, więc podczas aktualizowania wartości wymiaru dla rekordu (co jest prawdopodobnie najczęstszym scenariuszem) należy pamiętać o zaktualizowaniu pola wymiaru w tym rekordzie o nową wartość.