Miklix

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

Udgivet: 16. februar 2025 kl. 12.00.58 UTC

Denne artikel forklarer, hvordan du opdaterer en økonomisk dimensionsværdi fra X++-kode i Dynamics 365, herunder 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 formlogik.

Som du sikkert ved, er økonomiske dimensioner i Dynamics AX 2012 gemt i separate tabeller og refereret til gennem et RecId, normalt i et DefaultDimension-felt.

Hele rammen for håndtering af dimensioner er noget kompleks, og jeg oplever ofte, at jeg skal genlæse dokumentation om det, måske fordi det ikke er noget, jeg arbejder så tit med.

Anyway, opdatering af et felt i et eksisterende dimensionssæt er noget, der ofte dukker op, så jeg tænkte, at jeg ville skrive min yndlingsopskrift op ;-)


En statisk hjælpemetode 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 nok er det mest almindelige scenarie - skal du sørge for at opdatere dimensionsfeltet på den post med den nye værdi.

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

Mikkel Bang Christensen

Om forfatteren

Mikkel Bang 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.