Miklix

Ažuriranje vrijednosti finansijske dimenzije iz X++ koda u Dynamics 365

Objavljeno: 16. februar 2025. u 12:02:44 UTC
Posljednje ažurirano: 13. novembar 2025. u 13:38:53 UTC

Ovaj članak objašnjava kako ažurirati vrijednost finansijske dimenzije iz X++ koda u Dynamics 365, uključujući primjer koda.


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

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

Informacije u ovom postu zasnovane su na Dynamics 365. Trebalo bi da radi i u Dynamics AX 2012, ali to nisam eksplicitno testirao.

Nedavno sam dobio zadatak da ažuriram vrijednost jedne finansijske dimenzije na osnovu neke logike forme.

Kao što vjerovatno znate, budući da se finansijske dimenzije u Dynamics AX 2012 pohranjuju u odvojenim tabelama i referenciraju se putem RecId-a, obično u polju DefaultDimension.

Cijeli okvir za rukovanje dimenzijama je donekle složen i često se nađem u situaciji da moram ponovo čitati dokumentaciju o njemu, možda zato što to nije nešto s čime ne radim često.

U svakom slučaju, ažuriranje polja u postojećem skupu dimenzija je nešto što se često dešava, pa sam pomislio da napišem opis svog omiljenog recepta ;-)


Statička uslužna metoda mogla bi 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, tako da ako ažurirate vrijednost dimenzije za zapis - što je vjerovatno najčešći scenario - trebali biste se uvjeriti da ažurirate polje dimenzije u tom zapisu s novom vrijednošću.

Dodatno čitanje

Ako vam se svidio ovaj post, možda će vam se svidjeti i ovi prijedlozi:


Podijelite na BlueskyPodijelite na FacebookuPodijelite na LinkedIn-uPodijelite na Tumblr-uPodijeli na XPodijelite na LinkedIn-uPrikači na Pinterest

Mikkel Christensen

O autoru

Mikkel Christensen
Mikkel je kreator i vlasnik miklix.com. Ima preko 20 godina iskustva kao profesionalni kompjuterski programer/programer softvera i trenutno je zaposlen sa punim radnim vremenom u velikoj evropskoj IT korporaciji. Kada ne piše blog, svoje slobodno vrijeme provodi na širokom spektru interesovanja, hobija i aktivnosti, što se u određenoj mjeri može odraziti na različite teme koje se obrađuju na ovoj web stranici.