Miklix

Ažurirajte vrijednost financijske dimenzije iz X++ koda u sustavu Dynamics 365

Objavljeno: 16. veljače 2025. u 12:02:47 UTC

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


Ova je stranica strojno prevedena s engleskog kako bi bila dostupna što većem broju ljudi. Nažalost, strojno prevođenje još nije usavršena tehnologija pa se mogu pojaviti pogreške. Ako želite, izvornu englesku verziju možete pogledati ovdje:

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

Informacije u ovom postu temelje se na sustavu Dynamics 365. Također bi trebao raditi u sustavu Dynamics AX 2012, ali ga nisam izričito testirao.

Nedavno sam dobio zadatak ažurirati vrijednost jedne financijske dimenzije na temelju neke logike obrasca.

Kao što vjerojatno znate, budući da su Dynamics AX 2012 financijske dimenzije pohranjene u odvojenim tablicama i referencirane kroz RecId, obično u polju DefaultDimension.

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

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


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, pa ako ažurirate vrijednost dimenzije za zapis - što je vjerojatno najčešći scenarij - trebali biste ažurirati polje dimenzije na tom zapisu s novom vrijednošću.

Podijeli na BlueskyPodijelite na FacebookuPodijelite na LinkedInuPodijelite na TumblrPodijeli na XPodijelite na LinkedInuPrikvači na Pinterest

Mikkel Bang Christensen

O autoru

Mikkel Bang Christensen
Mikkel je kreator i vlasnik miklix.com. Ima više od 20 godina iskustva kao profesionalni računalni programer/razvijač softvera i trenutno je zaposlen na puno radno vrijeme za veliku europsku IT korporaciju. Kada ne piše blog, svoje slobodno vrijeme provodi na široku lepezu interesa, hobija i aktivnosti, što se u određenoj mjeri može odraziti na različite teme obrađene na ovoj web stranici.