Miklix

Ажурирајте ја вредноста на финансиската димензија од кодот X++ во Dynamics 365

Објавено: 5 март 2025, во 19:52:50 UTC
Последно ажурирано: 13 ноември 2025, во 13:39:27 UTC

Оваа статија објаснува како да се ажурира вредност на финансиска димензија од X++ код во Dynamics 365, вклучувајќи пример за код.


Оваа страница беше машински преведена од англиски за да биде достапна за што повеќе луѓе. За жал, машинското преведување сè уште не е усовршена технологија, така што може да се појават грешки. Ако сакате, можете да ја видите оригиналната англиска верзија овде:

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

Информациите во овој пост се базираат на Dynamics 365. Исто така, треба да работи и во Dynamics AX 2012, но не сум го тестирал експлицитно.

Неодамна добив задача да ја ажурирам вредноста на една финансиска димензија врз основа на некоја логика на формата.

Како што веројатно знаете, од Dynamics AX 2012, финансиските димензии се чуваат во посебни табели и се референцираат преку RecId, обично во полето DefaultDimension.

Целата рамка за ракување со димензии е донекаде сложена и честопати морам повторно да ја читам документацијата за неа, можеби затоа што тоа не е нешто со кое работам толку често.

Како и да е, ажурирањето на поле во постоечки сет на димензии е нешто што се појавува често, па помислив да напишам опис на мојот омилен рецепт ;-)


Методот на статичка корисност би можел да изгледа вака:

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

Методот враќа нов (или ист) DimensionDefault RecId, па ако ажурирате вредност на димензија за запис - што е веројатно најчестото сценарио - треба да се осигурате дека сте го ажурирале полето за димензија на тој запис со новата вредност.

Дополнително читање

Ако ви се допадна овој пост, можеби ќе ви се допаднат и овие предлози:


Споделете на BlueskyСподелете на ФејсбукСподелете на LinkedInСподелете на TumblrСподелете на XСподелете на LinkedInЗакачи на Pinterest

Микел Кристенсен

За авторот

Микел Кристенсен
Микел е креатор и сопственик на miklix.com. Тој има над 20 години искуство како професионален компјутерски програмер/развивач на софтвер и моментално е вработен со полно работно време во голема европска ИТ корпорација. Кога не пишува блог, тој го поминува своето слободно време на широк спектар на интереси, хоби и активности, кои до одреден степен може да се рефлектираат во разновидните теми опфатени на оваа веб-локација.