Miklix

Ažurirajte vrednost finansijske dimenzije iz Ks ++ koda u Dinamics KSNUMKS

Objavio: 19. mart 2025. 21:36:06 UTC

Ovaj članak objašnjava kako ažurirati vrednost finansijske dimenzije iz Ks ++ koda u Dinamics 365, uključujući primer koda.


Ova stranica je mašinski prevedena sa engleskog jezika kako bi bila dostupna što većem broju ljudi. Nažalost, mašinsko prevođenje još uvek nije usavršena tehnologija, tako da može doći do grešaka. Ako želite, možete pogledati originalnu englesku verziju ovde:

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

Informacije u ovom postu zasnovane su na Dynamics 365. Takođe bi trebalo da funkcionišu i u Dynamics AX 2012, ali nisam ih eksplicitno testirao.

Skoro su me zadali da ažuriram vrednost jedne finansijske dimenzije na osnovu neke logike u formi.

Verovatno znate, od Dynamics AX 2012 finansijske dimenzije se čuvaju u posebnim tabelama i referenciraju se kroz RecId, obično u polju DefaultDimension.

Celi okvir za upravljanje dimenzijama je donekle kompleksan i često se nađem u situaciji da moram ponovo da pročitam dokumentaciju o tome, možda zato što to nije nešto s čim se često bavim.

U svakom slučaju, ažuriranje polja u postojećem setu dimenzija je nešto što se često pojavljuje, pa sam pomislio da napišem svoj omiljeni recept ;-)


Statička pomoćna metoda može izgledati ovako:

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 vraća novi (ili isti) DimensionDefault RecId, pa ako ažurirate vrednost dimenzije za zapis - što je verovatno najčešći scenario - treba da se pobrinete da ažurirate polje dimenzije na tom zapisu sa novom vrednošću.

Podeli na BlueskiPodeli na FejsbukuPodeli na LinkedInPodeli na TumblrPodeli na XPodeli na LinkedInPin na Pinterest

Mikkel Christensen

O autoru

Mikkel Christensen
Mikel je tvorac i vlasnik miklix.com. Ima preko 20 godina iskustva kao profesionalni kompjuterski programer / programer i trenutno je zaposlen sa punim radnim vremenom za veliku evropsku IT korporaciju. Kada ne bloguje, on provodi svoje slobodno vreme na širokom spektru interesovanja, hobija i aktivnosti, što se u određenoj meri može odraziti na različite teme koje se obrađuju na ovoj veb stranici.