Miklix

Posodobite vrednost finančne razsežnosti iz kode X++ v Dynamics 365

Objavljeno: 16. februar 2025 ob 12:01:35 pop. UTC

Ta članek pojasnjuje, kako posodobiti vrednost finančne razsežnosti iz kode X++ v Dynamics 365, vključno s primerom kode.


Ta stran je bila strojno prevedena iz angleščine, da bi bila dostopna čim večjemu številu ljudi. Žal strojno prevajanje še ni popolna tehnologija, zato lahko pride do napak. Če želite, si lahko izvirno angleško različico ogledate tukaj:

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

Informacije v tej objavi temeljijo na Dynamics 365. Delovati bi moralo tudi v Dynamics AX 2012, vendar tega nisem izrecno preizkusil.

Pred kratkim sem dobil nalogo posodobiti vrednost ene same finančne razsežnosti na podlagi neke logike obrazca.

Kot verjetno veste, so finančne razsežnosti Dynamics AX 2012 shranjene v ločenih tabelah in nanje se sklicuje prek RecId, običajno v polju DefaultDimension.

Celoten okvir za ravnanje z dimenzijami je nekoliko zapleten in pogosto se znajdem, da moram ponovno brati dokumentacijo o njem, morda zato, ker s tem ne delam tako pogosto.

Kakor koli že, posodabljanje polja v obstoječem naboru dimenzij se pogosto pojavlja, zato sem pomislil, da bi napisal svoj najljubši recept ;-)


Statična uporabna metoda bi lahko izgledala takole:

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

Metoda vrne nov (ali isti) DimensionDefault RecId, tako da če posodabljate vrednost dimenzije za zapis – kar je verjetno najpogostejši scenarij – poskrbite, da boste posodobili polje dimenzije v tem zapisu z novo vrednostjo.

Delite na BlueskyDelite na FacebookuDelite na LinkedInuDelite na TumblrDelite na XDelite na LinkedInuPripni na Pinterest

Mikkel Bang Christensen

O avtorju

Mikkel Bang Christensen
Mikkel je avtor in lastnik spletne strani miklix.com. Ima več kot 20 let izkušenj kot profesionalni računalniški programer/razvijalec programske opreme in je trenutno za polni delovni čas zaposlen v veliki evropski IT korporaciji. Kadar ne piše bloga, svoj prosti čas posveča številnim interesom, hobijem in dejavnostim, kar se do neke mere odraža v raznolikosti tem na tem spletnem mestu.