Miklix

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

Vydáno: 16. února 2025 v 12:00:57 UTC
Poslední aktualizace: 13. listopadu 2025 v 13:35:53 UTC

Tento článek vysvětluje, jak aktualizovat hodnotu finanční dimenze z kódu X++ v aplikaci 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 systému Dynamics 365. Měly by fungovat i v systému Dynamics AX 2012, ale explicitně 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, finanční dimenze v Dynamics AX 2012 jsou uloženy v samostatných tabulkách a odkazovány prostřednictvím RecId, obvykle v poli DefaultDimension.

Celý systém pro práci s kótami je poněkud složitý a často si musím znovu číst dokumentaci k němu, možná proto, že s tím nepracuji tak často.

Každopádně, aktualizace pole v existující sadě dimenzí je něco, co se objevuje často, tak jsem si říkal, že napíšu shrnutí svého oblíbeného receptu ;-)


Statická utilita 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 v daném záznamu novou hodnotou.

Další čtení

Pokud se vám tento příspěvek líbil, mohly by se vám líbit i tyto návrhy:


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

Mikkel Christensen

O autorovi

Mikkel 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.