Miklix

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

Publikované: 16. februára 2025 o 12:01:34 UTC

Tento článok vysvetľuje, ako aktualizovať hodnotu finančnej dimenzie z kódu X++ v 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 Dynamics 365. Mal by fungovať aj v Dynamics AX 2012, ale výslovne 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, od Dynamics AX 2012 sú finančné dimenzie 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 manipuláciu s rozmermi je trochu zložitý a často sa pristihnem, že si k nemu musím znova prečítať dokumentáciu, možno preto, že to nie je niečo, s čím často pracujem.

Každopádne, aktualizácia poľa v existujúcej množine rozmerov sa objavuje často, tak som si povedal, že napíšem svoj obľúbený recept ;-)


Statická pomocná metóda môže 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 aktualizujete pole dimenzie na tomto zázname novou hodnotou.

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

Mikkel Bang Christensen

O autorovi

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