Miklix

Aktualizujte hodnotu finančnej dimenzie z kódu X++ v Dynamics 365

Publikované: 16. februára 2025 o 12:01:34 UTC
Posledná aktualizácia: 13. novembra 2025 o 13:37:44 UTC

Tento článok vysvetľuje, ako aktualizovať hodnotu finančnej dimenzie z kódu X++ v systéme Dynamics 365 vrátane príkladu kódu.


Táto stránka bola strojovo preložená z angličtiny, aby bola prístupná čo najväčšiemu počtu ľudí. Žiaľ, strojový preklad ešte nie je dokonalá technológia, takže sa môžu vyskytnúť chyby. Ak chcete, môžete si pozrieť pôvodnú anglickú verziu tu:

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

Informácie v tomto príspevku sú založené na systéme Dynamics 365. Malo by to fungovať aj v systéme Dynamics AX 2012, ale explicitne som to netestoval.

Nedávno som dostal za úlohu aktualizovať hodnotu jednej finančnej dimenzie na základe nejakej logiky formulára.

Ako pravdepodobne viete, finančné dimenzie v systéme Dynamics AX 2012 sú uložené v samostatných tabuľkách a odkazujú sa na ne prostredníctvom RecId, zvyčajne v poli DefaultDimension.

Celý rámec pre prácu s rozmermi je trochu zložitý a často si musím znova prečítať dokumentáciu k nemu, možno preto, že s tým nepracujem až tak často.

Každopádne, aktualizácia poľa v existujúcej sade dimenzií je niečo, čo sa objavuje často, tak som si pomyslel, že napíšem zoznam môjho obľúbeného receptu ;-)


Statická úžitková metóda by mohla vyzerať 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;
}

Metóda vracia nový (alebo rovnaký) DimensionDefault RecId, takže ak aktualizujete hodnotu dimenzie pre záznam – čo je pravdepodobne najbežnejší scenár – mali by ste sa uistiť, že ste pole dimenzie v danom zázname aktualizovali novou hodnotou.

Ďalšie čítanie

Ak sa vám tento príspevok páčil, možno sa vám budú páčiť aj tieto návrhy:


Zdieľať na BlueskyZdieľať na FacebookuZdieľať na LinkedInZdieľať na TumblrZdieľať na XZdieľať na LinkedInPripnúť na Pintereste

Mikkel Christensen

O autorovi

Mikkel Christensen
Mikkel je tvorcom a majiteľom miklix.com. Má viac ako 20 rokov skúseností ako profesionálny počítačový programátor/vývojár softvéru a v súčasnosti pracuje na plný úväzok pre veľkú európsku IT korporáciu. Keď práve nepíše blog, venuje svoj voľný čas širokej škále záujmov, koníčkov a aktivít, čo sa môže do istej miery odrážať v rôznorodosti tém na tejto webovej lokalite.