Ažuriranje vrijednosti finansijske dimenzije iz X++ koda u Dynamics 365
Objavljeno: 16. februar 2025. u 12:02:44 UTC
Ovaj članak objašnjava kako ažurirati vrijednost finansijske dimenzije iz X++ koda u Dynamics 365, uključujući primjer koda.
Update Financial Dimension Value from X++ Code in Dynamics 365
Informacije u ovom postu su zasnovane na Dynamics 365. Trebalo bi da radi i u Dynamics AX 2012, ali nisam ga eksplicitno testirao.
Nedavno sam dobio zadatak da ažuriram vrijednost jedne finansijske dimenzije na osnovu neke logike oblika.
Kao što vjerovatno znate, od Dynamics AX 2012 finansijske dimenzije su pohranjene u odvojenim tabelama i referencirane preko RecId-a, obično u DefaultDimension polju.
Cijeli okvir za rukovanje dimenzijama je donekle složen i često se nađem u situaciji da moram ponovo čitati dokumentaciju o tome, možda zato što to nije nešto s čime radim tako često.
U svakom slučaju, ažuriranje polja u postojećem skupu dimenzija je nešto što se često pojavljuje, pa sam mislio da ću napisati svoj omiljeni recept ;-)
Statički uslužni metod bi mogao izgledati ovako:
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 vraća novi (ili isti) DimensionDefault RecId, tako da ako ažurirate vrijednost dimenzije za zapis - što je vjerovatno najčešći scenarij - trebali biste se pobrinuti da ažurirate polje dimenzije na tom zapisu sa novom vrijednošću.