Ažurirajte vrijednost financijske dimenzije iz X++ koda u sustavu Dynamics 365
Objavljeno: 16. veljače 2025. u 12:02:47 UTC
Ovaj članak objašnjava kako ažurirati vrijednost financijske dimenzije iz X++ koda u sustavu Dynamics 365, uključujući primjer koda.
Update Financial Dimension Value from X++ Code in Dynamics 365
Informacije u ovom postu temelje se na sustavu Dynamics 365. Također bi trebao raditi u sustavu Dynamics AX 2012, ali ga nisam izričito testirao.
Nedavno sam dobio zadatak ažurirati vrijednost jedne financijske dimenzije na temelju neke logike obrasca.
Kao što vjerojatno znate, budući da su Dynamics AX 2012 financijske dimenzije pohranjene u odvojenim tablicama i referencirane kroz RecId, obično u polju DefaultDimension.
Cijeli okvir za rukovanje dimenzijama donekle je složen i često se nađem u situaciji da moram ponovno čitati dokumentaciju o njemu, 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 napisati svoj omiljeni recept ;-)
Statička uslužna metoda mogla bi 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, pa ako ažurirate vrijednost dimenzije za zapis - što je vjerojatno najčešći scenarij - trebali biste ažurirati polje dimenzije na tom zapisu s novom vrijednošću.