Miklix

Opdater økonomisk dimensionsværdi fra X++-kode i Dynamics 365

Udgivet: 16. februar 2025 kl. 12.00.58 UTC
Sidst opdateret: 13. november 2025 kl. 13.35.56 UTC

Denne artikel forklarer, hvordan du opdaterer en finansiel dimensionsværdi fra X++-kode i Dynamics 365, inklusive et kodeeksempel.


Denne side er blevet maskinoversat fra engelsk for at gøre den tilgængelig for så mange mennesker som muligt. Desværre er maskinoversættelse endnu ikke en perfekt teknologi, så der kan forekomme fejl. Hvis du foretrækker det, kan du se den originale engelske version her:

Update Financial Dimension Value from X++ Code in Dynamics 365

Oplysningerne i dette indlæg er baseret på Dynamics 365. Det burde også virke i Dynamics AX 2012, men jeg har ikke eksplicit testet det.

Jeg fik for nylig til opgave at opdatere værdien af en enkelt finansiel dimension baseret på en form for logik.

Som du sikkert ved, gemmes finansielle dimensioner i Dynamics AX 2012 i separate tabeller og refereres til via et RecId, normalt i et DefaultDimension-felt.

Hele rammeværket for håndtering af dimensioner er noget komplekst, og jeg er ofte nødt til at genlæse dokumentationen om det, måske fordi det ikke er noget, jeg arbejder med så ofte.

Nå, men opdatering af et felt i et eksisterende dimensionssæt er noget, der ofte opstår, så jeg tænkte, at jeg ville skrive en beretning om min yndlingsopskrift ;-)


En statisk nyttemetode kunne se sådan ud:

public static DimensionDefault updateDimension( DimensionDefault    _defaultDimension,
                                                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 et nyt (eller det samme) DimensionDefault RecId, så hvis du opdaterer en dimensionsværdi for en post - hvilket sandsynligvis er det mest almindelige scenarie - skal du sørge for at opdatere dimensionsfeltet på den pågældende post med den nye værdi.

Yderligere læsning

Hvis du kunne lide dette indlæg, kan du måske også lide disse forslag:


Del på BlueskyDel på FacebookDel på LinkedInDel på TumblrDel på XDel på LinkedInFastgør på Pinterest

Mikkel Christensen

Om forfatteren

Mikkel Christensen
Mikkel er skaberen og ejeren af miklix.com. Han har over 20 års erfaring som professionel computerprogrammør/softwareudvikler og er i øjeblikket fuldtidsansat i en stor europæisk IT-virksomhed. Når han ikke blogger, bruger han sin fritid på en lang række interesser, hobbyer og aktiviteter, som i et vist omfang afspejles i de mange forskellige emner, der dækkes på dette websted.