Aggiorna il valore della dimensione finanziaria dal codice X++ in Dynamics 365
Pubblicato: 16 febbraio 2025 alle ore 12:01:11 UTC
Questo articolo spiega come aggiornare un valore di dimensione finanziaria dal codice X++ in Dynamics 365, incluso un esempio di codice.
Update Financial Dimension Value from X++ Code in Dynamics 365
Le informazioni in questo post si basano su Dynamics 365. Dovrebbe funzionare anche in Dynamics AX 2012, ma non l'ho testato esplicitamente.
Di recente mi è stato chiesto di aggiornare il valore di una singola dimensione finanziaria in base a una qualche forma di logica.
Come probabilmente saprai, poiché le dimensioni finanziarie di Dynamics AX 2012 sono archiviate in tabelle separate e referenziate tramite un RecId, solitamente in un campo DefaultDimension.
L'intero framework per la gestione delle dimensioni è piuttosto complesso e spesso mi ritrovo a dover rileggere la documentazione al riguardo, forse perché non è qualcosa con cui lavoro molto spesso.
In ogni caso, aggiornare un campo in un set di dimensioni esistente è un'operazione che capita di frequente, quindi ho pensato di scrivere un articolo sulla mia ricetta preferita ;-)
Un metodo di utilità statico potrebbe apparire così:
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;
}
Il metodo restituisce un nuovo (o lo stesso) DimensionDefault RecId, quindi se si aggiorna un valore di dimensione per un record (che è probabilmente lo scenario più comune), è necessario assicurarsi di aggiornare il campo dimensione su quel record con il nuovo valore.