Miklix

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

Објавено: 5 март 2025, во 19:52:50 UTC
Последно ажурирано: 5 март 2025, во 19:53:09 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 години искуство како професионален компјутерски програмер/развивач на софтвер и моментално е вработен со полно работно време во голема европска ИТ корпорација. Кога не пишува блог, тој го поминува своето слободно време на широк спектар на интереси, хоби и активности, кои до одреден степен може да се рефлектираат во разновидните теми опфатени на оваа веб-локација.