Miklix

Oppdater økonomisk dimensjonsverdi fra X++-kode i Dynamics 365

Publisert: 16. februar 2025 kl. 12:01:22 UTC
Sist oppdatert: 13. september 2025 kl. 22:52:55 UTC

Denne artikkelen forklarer hvordan du oppdaterer en finansdimensjonsverdi fra X++-kode i Dynamics 365, inkludert et kodeeksempel.


Denne siden er maskinoversatt fra engelsk for å gjøre den tilgjengelig for så mange som mulig. Dessverre er maskinoversettelse ennå ikke en fullkommen teknologi, så det kan forekomme feil. Hvis du foretrekker det, kan du se den engelske originalversjonen her:

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 eller annen formlogikk.

Som du sikkert vet, siden Dynamics AX 2012-finansdimensjoner lagres i separate tabeller og refereres til via en RecId, vanligvis i et DefaultDimension-felt.

Hele rammeverket for håndtering av dimensjoner er noe komplekst, og jeg må ofte lese dokumentasjon på det på nytt, kanskje fordi det ikke er noe jeg jobber med så ofte.

Uansett, oppdatering av et felt i et eksisterende dimensjonssett er noe som dukker opp ofte, så jeg tenkte jeg skulle skrive opp favorittoppskriften min ;-)


En statisk verktøymetode kan se slik ut:

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 en ny (eller den 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 for denne posten med den nye verdien.

Videre lesing

Hvis du likte dette innlegget, kan du også like disse forslagene:


Del på BlueskyDel på FacebookDel på LinkedInDel på TumblrDel på XDel på LinkedInFest på Pinterest

Mikkel Christensen

Om forfatteren

Mikkel Christensen
Mikkel er skaperen og eieren av miklix.com. Han har over 20 års erfaring som profesjonell dataprogrammerer/programvareutvikler og er for tiden ansatt på fulltid i et stort europeisk IT-selskap. Når han ikke blogger, bruker han fritiden sin på en lang rekke interesser, hobbyer og aktiviteter, noe som til en viss grad kan gjenspeiles i de mange ulike temaene som dekkes på dette nettstedet.