Miklix

Aktualizujte hodnotu finanční dimenze z kódu X++ v Dynamics 365

Vydáno: 16. února 2025 v 12:00:57 UTC

Tento článek vysvětluje, jak aktualizovat hodnotu finanční dimenze z kódu X++ v Dynamics 365, včetně příkladu kódu.


Tato stránka byla strojově přeložena z angličtiny, aby byla přístupná co největšímu počtu lidí. Strojový překlad bohužel ještě není dokonalá technologie, takže může dojít k chybám. Pokud si přejete, můžete si prohlédnout původní anglickou verzi zde:

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

Informace v tomto příspěvku jsou založeny na Dynamics 365. Mělo by to fungovat i v Dynamics AX 2012, ale výslovně jsem to netestoval.

Nedávno jsem dostal za úkol aktualizovat hodnotu jedné finanční dimenze na základě nějaké logiky formuláře.

Jak pravděpodobně víte, od Dynamics AX 2012 jsou finanční dimenze uloženy v samostatných tabulkách a odkazují se na ně prostřednictvím RecId, obvykle v poli DefaultDimension.

Celý rámec pro manipulaci s rozměry je poněkud složitý a často se přistihnu, že k němu musím znovu číst dokumentaci, možná proto, že to není něco, s čím pracuji tak často.

Každopádně aktualizace pole v existující sadě dimenzí je něco, co se objevuje často, tak jsem si řekl, že napíšu svůj oblíbený recept ;-)


Statická obslužná metoda by mohla vypadat takto:

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 vrací nové (nebo stejné) DimensionDefault RecId, takže pokud aktualizujete hodnotu dimenze pro záznam – což je pravděpodobně nejběžnější scénář – měli byste se ujistit, že aktualizujete pole dimenze na tomto záznamu novou hodnotou.

Sdílet na BlueskySdílejte na FacebookuSdílet na LinkedInSdílet na TumblrSdílet na XSdílet na LinkedInPřipnout na Pinterest

Mikkel Bang Christensen

O autorovi

Mikkel Bang Christensen
Mikkel je tvůrcem a majitelem webu miklix.com. Má více než 20 let zkušeností jako profesionální programátor/vývojář softwaru a v současné době pracuje na plný úvazek pro velkou evropskou IT společnost. Pokud zrovna nepíše blog, věnuje svůj volný čas široké škále zájmů, koníčků a aktivit, což se může do jisté míry odrážet v rozmanitosti témat na tomto webu.