Miklix

Päivitä taloudellisen ulottuvuuden arvo X++-koodista Dynamics 365:ssä

Julkaistu: 16. helmikuuta 2025 klo 12.01.04 UTC

Tässä artikkelissa kerrotaan, kuinka taloudellisen ulottuvuuden arvo päivitetään X++-koodista Dynamics 365:ssä, mukaan lukien koodiesimerkki.


Tämä sivu on käännetty koneellisesti englannista, jotta se olisi mahdollisimman monen ihmisen saatavilla. Valitettavasti konekääntäminen ei ole vielä täydellistä tekniikkaa, joten virheitä voi esiintyä. Voit halutessasi tarkastella alkuperäistä englanninkielistä versiota täällä:

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

Tämän viestin tiedot perustuvat Dynamics 365:een. Sen pitäisi toimia myös Dynamics AX 2012:ssa, mutta en ole erikseen testannut sitä.

Sain äskettäin tehtäväksi päivittää yksittäisen taloudellisen ulottuvuuden arvon jonkin lomakelogiikan perusteella.

Kuten luultavasti tiedät, Dynamics AX 2012:n taloudelliset dimensiot tallennetaan erillisiin taulukoihin ja niihin viitataan RecId:n kautta, yleensä DefaultDimension-kentässä.

Koko kehys mittojen käsittelylle on jokseenkin monimutkainen, ja joudun usein lukemaan sen dokumentaatiota uudelleen, ehkä siksi, etten työskentele kovin usein sen kanssa.

Joka tapauksessa kentän päivittäminen olemassa olevaan mittasarjaan tulee usein esiin, joten ajattelin kirjoittaa suosikkireseptini ;-)


Staattinen apumenetelmä voisi näyttää tältä:

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;
}

Menetelmä palauttaa uuden (tai saman) DimensionDefault RecId:n, joten jos päivität tietueen ulottuvuuden arvoa - mikä on luultavasti yleisin skenaario - sinun tulee muistaa päivittää kyseisen tietueen ulottuvuuskenttä uudella arvolla.

Jaa BlueskyssäJaa FacebookissaJaa LinkedInissäJaa TumblrissaJaa X:ssäJaa LinkedInissäPin Pinterestissä

Mikkel Bang Christensen

Kirjoittajasta

Mikkel Bang Christensen
Mikkel on miklix.com-sivuston luoja ja omistaja. Hänellä on yli 20 vuoden kokemus ammattimaisena tietokoneohjelmoijana/ohjelmistokehittäjänä, ja tällä hetkellä hän työskentelee kokopäiväisesti suuressa eurooppalaisessa IT-yrityksessä. Kun hän ei ole bloggaamassa, hän käyttää vapaa-aikaansa monenlaisiin kiinnostuksen kohteisiin, harrastuksiin ja aktiviteetteihin, mikä saattaa jossain määrin heijastua tällä verkkosivustolla käsiteltävien aiheiden moninaisuuteen.