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.
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:
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.