Miklix

Dateer finansiële dimensiewaarde op vanaf X++-kode in Dynamics 365

Gepubliseer: 16 Februarie 2025 om 12:02:19 UTC

Hierdie artikel verduidelik hoe om 'n finansiële dimensiewaarde vanaf X++-kode in Dynamics 365 op te dateer, insluitend 'n kodevoorbeeld.


Hierdie bladsy is masjienvertaal uit Engels om dit vir soveel mense moontlik toeganklik te maak. Ongelukkig is masjienvertaling nog nie 'n volmaakte tegnologie nie, dus kan foute voorkom. As jy verkies, kan jy die oorspronklike Engelse weergawe hier sien:

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

Die inligting in hierdie pos is gebaseer op Dynamics 365. Dit behoort ook in Dynamics AX 2012 te werk, maar ek het dit nie eksplisiet getoets nie.

Ek het onlangs die taak gekry om die waarde van 'n enkele finansiële dimensie op grond van een of ander vormlogika op te dateer.

Soos u waarskynlik weet, word finansiële dimensies sedert Dynamics AX 2012 in aparte tabelle gestoor en deur 'n RecId verwys, gewoonlik in 'n DefaultDimension-veld.

Die hele raamwerk vir die hantering van dimensies is ietwat kompleks en ek vind dikwels dat ek dokumentasie daaroor moet herlees, miskien omdat dit nie iets is waarmee ek so gereeld werk nie.

In elk geval, die opdatering van 'n veld in 'n bestaande dimensiestel is iets wat gereeld voorkom, so ek het gedink ek sal 'n skrywe van my gunsteling resep doen;-)


'n Statiese nutsmetode kan soos volg lyk:

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

Die metode gee 'n nuwe (of dieselfde) DimensionDefault RecId terug, dus as u 'n dimensiewaarde vir 'n rekord opdateer - wat waarskynlik die algemeenste scenario is - moet u seker maak dat u die dimensieveld op die rekord met die nuwe waarde opdateer.

Deel op BlueskyDeel op FacebookDeel op LinkedInDeel op TumblrDeel op XDeel op LinkedInSpeld op Pinterest

Mikkel Bang Christensen

Oor die skrywer

Mikkel Bang Christensen
Mikkel is die skepper en eienaar van miklix.com. Hy het meer as 20 jaar ondervinding as 'n professionele rekenaarprogrammeerder/sagteware-ontwikkelaar en is tans voltyds in diens van 'n groot Europese IT-korporasie. Wanneer hy nie blog nie, spandeer hy sy vrye tyd aan 'n groot verskeidenheid belangstellings, stokperdjies en aktiwiteite, wat tot 'n mate weerspieël kan word in die verskeidenheid onderwerpe wat op hierdie webwerf gedek word.