Miklix

Atnaujinkite finansinės dimensijos vertę iš X++ kodo sistemoje „Dynamics 365“.

Paskelbta: 2025 m. vasario 16 d. 12:01:19 UTC
Paskutinį kartą atnaujinta: 2025 m. lapkričio 13 d. 13:37:20 UTC

Šiame straipsnyje paaiškinama, kaip atnaujinti finansinės dimensijos reikšmę iš X++ kodo programoje „Dynamics 365“, įskaitant kodo pavyzdį.


Šis puslapis buvo mašininiu būdu išverstas iš anglų kalbos, kad juo galėtų naudotis kuo daugiau žmonių. Deja, mašininis vertimas dar nėra tobula technologija, todėl gali pasitaikyti klaidų. Jei pageidaujate, originalią versiją anglų kalba galite peržiūrėti čia:

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

Šiame įraše pateikta informacija pagrįsta „Dynamics 365“. Ji taip pat turėtų veikti „Dynamics AX 2012“, bet aš to konkrečiai neišbandžiau.

Neseniai man buvo pavesta atnaujinti vienos finansinės dimensijos reikšmę remiantis tam tikra formos logika.

Kaip tikriausiai žinote, kadangi „Dynamics AX 2012“ finansinės dimensijos saugomos atskirose lentelėse ir į jas nurodoma per „RecId“, paprastai lauke „DefaultDimension“.

Visa dimensijų tvarkymo sistema yra gana sudėtinga ir man dažnai tenka iš naujo perskaityti jos dokumentaciją, galbūt todėl, kad su šia tema dirbu retai.

Šiaip ar taip, lauko atnaujinimas esamame dimensijų rinkinyje yra dažnas uždavinys, todėl pamaniau, kad parašysiu savo mėgstamą receptą ;-)


Statinis naudingumo metodas galėtų atrodyti taip:

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

Metodas grąžina naują (arba tą patį) „DimensionDefault RecId“, todėl atnaujinant įrašo dimensijos reikšmę (o tai tikriausiai yra dažniausiai pasitaikantis scenarijus) reikėtų atnaujinti to įrašo dimensijos lauką nauja reikšme.

Papildoma literatūra

Jei jums patiko šis įrašas, jums taip pat gali patikti šie pasiūlymai:


Pasidalinkite „Bluesky“.Dalintis FacebookBendrinkite „LinkedIn“.Bendrinkite „Tumblr“.Dalintis XBendrinkite „LinkedIn“.Prisegti prie Pinterest

Mikkel Christensen

Apie autorių

Mikkel Christensen
Mikkelis yra miklix.com kūrėjas ir savininkas. Jis turi daugiau nei 20 metų profesionalaus kompiuterių programuotojo ir programinės įrangos kūrėjo patirtį ir šiuo metu visą darbo dieną dirba didelėje Europos IT korporacijoje. Kai jis nerašo tinklaraščio, laisvalaikį skiria įvairiems interesams, pomėgiams ir užsiėmimams, kurie tam tikra prasme gali atsispindėti šioje svetainėje nagrinėjamų temų įvairovėje.