Miklix

I-update ang Value ng Financial Dimension mula sa X++ Code sa Dynamics 365

Nai-publish: Marso 19, 2025 nang 9:36:07 PM UTC

Ipinapaliwanag ng artikulong ito kung paano mag-update ng halaga ng dimensyon sa pananalapi mula sa X++ code sa Dynamics 365, kasama ang isang halimbawa ng code.


Ang pahinang ito ay isinalin sa makina mula sa Ingles upang gawin itong naa-access sa pinakamaraming tao hangga't maaari. Sa kasamaang palad, ang pagsasalin ng makina ay hindi pa isang perpektong teknolohiya, kaya maaaring mangyari ang mga error. Kung gusto mo, maaari mong tingnan ang orihinal na bersyong Ingles dito:

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

Ang impormasyon sa post na ito ay batay sa Dynamics 365. Dapat din itong gumana sa Dynamics AX 2012, ngunit hindi ko ito tahasang nasubukan.

Kamakailan lang, ako ay pinasahan ng gawain na i-update ang halaga ng isang financial dimension batay sa ilang form logic.

Tulad ng malamang alam mo, mula nang Dynamics AX 2012 ang mga financial dimension ay ini-imbak sa mga hiwalay na table at tinutukoy sa pamamagitan ng RecId, karaniwan sa isang DefaultDimension field.

Ang buong framework para sa pag-handle ng mga dimension ay medyo kumplikado at madalas ko itong binabalikan para basahin ang dokumentasyon tungkol dito, marahil dahil hindi ko ito madalas ginagamit.

Gayunpaman, ang pag-update ng isang field sa isang umiiral na dimension set ay isang bagay na madalas mangyari, kaya naisip kong magsulat ng isang post tungkol sa aking paboritong recipe ;-)


Ang isang static utility method ay maaaring ganito:

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

Ang method ay nagbabalik ng isang bagong (o parehong) DimensionDefault RecId, kaya kung nag-a-update ng dimension value para sa isang record - na marahil ang pinaka-karaniwang senaryo - siguraduhing i-update ang dimension field sa record na iyon ng bagong halaga.

Ibahagi sa BlueskyIbahagi sa FacebookIbahagi sa LinkedInIbahagi sa TumblrIbahagi sa XIbahagi sa LinkedInI-pin sa Pinterest

Mikkel Christensen

Tungkol sa May-akda

Mikkel Christensen
Si Mikkel ang lumikha at may-ari ng miklix.com. Siya ay may higit sa 20 taong karanasan bilang isang propesyonal na computer programmer/software developer at kasalukuyang nagtatrabaho ng full-time para sa isang malaking European IT corporation. Kapag hindi nagba-blog, ginugugol niya ang kanyang bakanteng oras sa isang malawak na hanay ng mga interes, libangan, at aktibidad, na maaaring sa ilang lawak ay makikita sa iba't ibang mga paksang sakop sa website na ito.