Miklix

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

Paskelbta: 2025 m. vasario 16 d. 12:01:19 UTC

Šiame straipsnyje paaiškinama, kaip atnaujinti finansinės dimensijos vertę iš X++ kodo sistemoje „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 yra pagrįsta Dynamics 365. Ji taip pat turėtų veikti su Dynamics AX 2012, bet aš jos aiškiai neišbandžiau.

Neseniai man buvo pavesta atnaujinti vienos finansinės dimensijos vertę, remiantis tam tikra formos logika.

Kaip tikriausiai žinote, nuo Dynamics AX 2012 finansinės dimensijos saugomos atskirose lentelėse ir nurodomos naudojant RecId, paprastai lauke DefaultDimension.

Visa matmenų tvarkymo sistema yra šiek tiek sudėtinga, todėl man dažnai tenka iš naujo perskaityti dokumentaciją apie tai, galbūt todėl, kad aš ne taip dažnai dirbu su ja.

Šiaip ar taip, esamo matmenų rinkinio lauko atnaujinimas dažnai pasitaiko, todėl pamaniau parašyti savo mėgstamą receptą ;-)


Statinio naudingumo metodas gali 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, taigi, jei atnaujinate įrašo dimensijos reikšmę (tai tikriausiai yra dažniausiai pasitaikantis scenarijus), būtinai atnaujinkite to įrašo dimensijos lauką nauja verte.

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

Mikkel Bang Christensen

Apie autorių

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