Miklix

Finantsdimensiooni väärtuse värskendamine Dynamics 365 koodist X++

Avaldatud: 16. veebruar 2025, kell 12:01:03 UTC
Viimati uuendatud: 13. november 2025, kell 13:36:08 UTC

See artikkel selgitab, kuidas värskendada Dynamics 365-s X++ koodist finantsdimensiooni väärtust, sh koodinäide.


See lehekülg on inglise keelest masintõlgitud, et muuta see võimalikult paljudele inimestele kättesaadavaks. Kahjuks ei ole masintõlge veel täiuslik tehnoloogia, mistõttu võivad esineda vead. Kui soovite, võite vaadata ingliskeelset originaalversiooni siin:

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

Selle postituse teave põhineb Dynamics 365-l. See peaks toimima ka Dynamics AX 2012-s, aga ma pole seda otseselt testinud.

Hiljuti anti mulle ülesandeks uuendada ühe finantsdimensiooni väärtust mingi vormiloogika põhjal.

Nagu te ilmselt teate, salvestatakse Dynamics AX 2012 finantsdimensioonid eraldi tabelitesse ja neile viidatakse RecId kaudu, tavaliselt DefaultDimension väljal.

Kogu dimensioonide käsitlemise raamistik on mõnevõrra keeruline ja pean sageli selle kohta dokumentatsiooni uuesti lugema, võib-olla seetõttu, et ma ei tööta sellega eriti tihti.

Igatahes, olemasoleva dimensioonikomplekti välja uuendamine on midagi, mis tuleb sageli ette, seega mõtlesin, et kirjutan oma lemmikretseptist üles ;-)


Staatiline utiliidi meetod võiks välja näha selline:

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

Meetod tagastab uue (või sama) DimensionDefault RecId väärtuse, seega kirje dimensiooniväärtuse värskendamisel – mis on ilmselt kõige levinum stsenaarium – peaksite kindlasti värskendama selle kirje dimensioonivälja uue väärtusega.

Lisalugemist

Kui see postitus teile meeldis, võivad teile meeldida ka need soovitused:


Jagage Bluesky'sJaga FacebookisJagage LinkedInisJaga TumblrisJaga X-isJagage LinkedInisKinnitage Pinterestis

Mikkel Christensen

Autorist

Mikkel Christensen
Mikkel on miklix.com looja ja omanik. Tal on üle 20 aasta kogemust professionaalse programmeerija/tarkvaraarendajana ning praegu töötab ta täiskohaga suures Euroopa IT-ettevõttes. Kui ta ei kirjuta blogi, veedab ta oma vaba aega mitmesuguste huvide, hobide ja tegevustega, mis võib mingil määral kajastuda sellel veebisaidil käsitletavate teemade mitmekesisuses.