Miklix

Frissítse a pénzügyi dimenzió értékét az X++ kódból a Dynamics 365-ben

Megjelent: 2025. február 16. 12:01:06 UTC

Ez a cikk bemutatja, hogyan frissíthet pénzügyi dimenzióértéket X++ kódból a Dynamics 365 rendszerben, beleértve egy kódpéldát.


Ezt az oldalt angolból gépi fordítással készítettük, hogy minél több ember számára elérhető legyen. Sajnos a gépi fordítás még nem tökéletes technológia, ezért előfordulhatnak hibák. Ha szeretné, itt megtekintheti az eredeti angol nyelvű változatot:

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

A bejegyzésben szereplő információk a Dynamics 365-ön alapulnak. A Dynamics AX 2012-ben is működnie kell, de nem teszteltem kifejezetten.

Nemrég azt a feladatot kaptam, hogy valamilyen formalogika alapján frissítsem egyetlen pénzügyi dimenzió értékét.

Amint azt valószínűleg Ön is tudja, a Dynamics AX 2012 pénzügyi dimenziói külön táblákban vannak tárolva, és egy RecId-n keresztül hivatkoznak rájuk, általában egy DefaultDimension mezőben.

A méretek kezelésének teljes kerete kissé összetett, és gyakran azon kapom magam, hogy újra kell olvasnom a dokumentációt, talán azért, mert nem olyan gyakran dolgozom vele.

Mindenesetre egy meglévő dimenziókészletben gyakran előfordul egy mező frissítése, ezért úgy gondoltam, leírom kedvenc receptemet ;-)


A statikus segédprogram így nézhet ki:

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

A metódus egy új (vagy ugyanazt) DimensionDefault RecId-t ad vissza, így ha egy rekord dimenzióértékét frissíti – ami valószínűleg a leggyakoribb forgatókönyv –, mindenképpen frissítse az adott rekord dimenziómezőjét az új értékkel.

Oszd meg a Bluesky-nOszd meg a FacebookonOszd meg a LinkedIn-enOszd meg a Tumblr-enOszd meg X-enOszd meg a LinkedIn-enPin a Pinteresten

Mikkel Bang Christensen

A szerzőről

Mikkel Bang Christensen
Mikkel a miklix.com létrehozója és tulajdonosa. Több mint 20 éves tapasztalattal rendelkezik, mint hivatásos számítógépes programozó/szoftverfejlesztő, és jelenleg teljes munkaidőben dolgozik egy nagy európai informatikai vállalatnál. Amikor nem blogol, szabadidejét érdeklődési körének, hobbijainak és tevékenységeinek széles skálájával tölti, ami bizonyos mértékig tükröződhet a weboldalon tárgyalt témák sokféleségében.