Miklix

Actualizați valoarea dimensiunii financiare din codul X++ în Dynamics 365

Publicat: 16 februarie 2025 la 12:01:32 UTC
Ultima actualizare: 13 noiembrie 2025 la 13:37:39 UTC

Acest articol explică cum se actualizează o valoare a unei dimensiuni financiare din codul X++ în Dynamics 365, inclusiv un exemplu de cod.


Această pagină a fost tradusă automat din limba engleză pentru a o face accesibilă cât mai multor persoane. Din păcate, traducerea automată nu este încă o tehnologie perfecționată, astfel încât pot apărea erori. Dacă preferați, puteți vizualiza versiunea originală în limba engleză aici:

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

Informațiile din această postare se bazează pe Dynamics 365. Ar trebui să funcționeze și în Dynamics AX 2012, dar nu l-am testat în mod explicit.

Recent, am fost însărcinat să actualizez valoarea unei singure dimensiuni financiare pe baza unei logici de formular.

După cum probabil știți, deoarece dimensiunile financiare din Dynamics AX 2012 sunt stocate în tabele separate și se face referire la ele printr-un RecId, de obicei într-un câmp DefaultDimension.

Întregul cadru de lucru pentru gestionarea dimensiunilor este oarecum complex și deseori mă trezesc nevoit să recitesc documentația despre acesta, poate pentru că nu este ceva cu care lucrez prea des.

În orice caz, actualizarea unui câmp dintr-un set de dimensiuni existent este ceva ce apare frecvent, așa că m-am gândit să scriu o recenzie despre rețeta mea preferată ;-)


O metodă utilitară statică ar putea arăta astfel:

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

Metoda returnează un nou (sau același) DimensionDefault RecId, așa că, dacă actualizați o valoare de dimensiune pentru o înregistrare - ceea ce este probabil cel mai comun scenariu - trebuie să vă asigurați că actualizați câmpul dimensiune din înregistrarea respectivă cu noua valoare.

Lectură suplimentară

Dacă ți-a plăcut această postare, s-ar putea să-ți placă și aceste sugestii:


Distribuie pe BlueskyDistribuie pe FacebookDistribuie pe LinkedInDistribuie pe TumblrDistribuie pe XDistribuie pe LinkedInPin pe Pinterest

Mikkel Christensen

Despre autor

Mikkel Christensen
Mikkel este creatorul și proprietarul miklix.com. El are peste 20 de ani de experiență ca programator de calculatoare/dezvoltator software profesionist și este în prezent angajat cu normă întreagă pentru o mare corporație europeană de IT. Atunci când nu scrie pe blog, își petrece timpul liber cu o gamă largă de interese, hobby-uri și activități, care se pot reflecta într-o anumită măsură în varietatea de subiecte abordate pe acest site.