Oppdater økonomisk dimensjonsverdi fra X++-kode i Dynamics 365
Publisert: 16. februar 2025 kl. 12:01:22 UTC
Denne artikkelen forklarer hvordan du oppdaterer en økonomisk dimensjonsverdi fra X++-kode i Dynamics 365, inkludert et kodeeksempel.
Update Financial Dimension Value from X++ Code in Dynamics 365
Informasjonen i dette innlegget er basert på Dynamics 365. Det skal også fungere i Dynamics AX 2012, men jeg har ikke eksplisitt testet det.
Jeg fikk nylig i oppgave å oppdatere verdien av en enkelt økonomisk dimensjon basert på en formlogikk.
Som du sikkert vet, siden Dynamics AX 2012 er økonomiske dimensjoner lagret i separate tabeller og referert til gjennom en RecId, vanligvis i et DefaultDimension-felt.
Hele rammeverket for håndtering av dimensjoner er noe komplekst og jeg opplever ofte at jeg må lese dokumentasjon om det på nytt, kanskje fordi det ikke er noe jeg jobber med så ofte.
Uansett, å oppdatere et felt i et eksisterende dimensjonssett er noe som dukker opp ofte, så jeg tenkte jeg skulle skrive en oppskrift på favorittoppskriften min ;-)
En statisk verktøymetode kan se slik ut:
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;
}
Metoden returnerer en ny (eller samme) DimensionDefault RecId, så hvis du oppdaterer en dimensjonsverdi for en post - som sannsynligvis er det vanligste scenariet - bør du sørge for å oppdatere dimensjonsfeltet på den posten med den nye verdien.