Miklix

Актуализирайте стойността на финансовото измерение от X++ Code в Dynamics 365

Публикувано: 16 февруари 2025 г. в 12:00:55 ч. UTC
Последна актуализация: 13 ноември 2025 г. в 13:35:49 ч. 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Споделете във FacebookСподелете в LinkedInСподелете в TumblrСподелете в XСподелете в LinkedInЗакачи в Пинтерест

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

За автора

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