Miklix

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

Publicat: 16 februarie 2025 la 12:01:32 UTC

Acest articol explică cum să actualizați valoarea 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 am testat-o ​​în mod explicit.

Am fost recent însărcinat cu actualizarea valorii unei singure dimensiuni financiare pe baza unei logici de formă.

După cum probabil știți, din moment ce dimensiunile financiare din Dynamics AX 2012 sunt stocate în tabele separate și referite printr-un RecId, de obicei într-un câmp DefaultDimension.

Întregul cadru pentru manipularea dimensiunilor este oarecum complex și de multe ori mă trezesc nevoit să recitesc documentația despre el, poate pentru că nu este ceva cu care lucrez atât de des.

Oricum, actualizarea unui câmp dintr-un set de dimensiuni existent este ceva care apare frecvent, așa că m-am gândit să scriu rețeta mea preferată ;-)


O metodă de utilitate 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 - care este probabil cel mai frecvent scenariu - ar trebui să vă asigurați că actualizați câmpul de dimensiune din acea înregistrare cu noua valoare.

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

Mikkel Bang Christensen

Despre autor

Mikkel Bang 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.