Miklix

Aggiorna il valore della dimensione finanziaria dal codice X++ in Dynamics 365

Pubblicato: 16 febbraio 2025 alle ore 12:01:11 UTC
Ultimo aggiornamento: 13 novembre 2025 alle ore 13:37:12 UTC

Questo articolo spiega come aggiornare il valore di una dimensione finanziaria dal codice X++ in Dynamics 365, incluso un esempio di codice.


Questa pagina è stata tradotta automaticamente dall'inglese per renderla accessibile al maggior numero di persone possibile. Purtroppo, la traduzione automatica non è ancora una tecnologia perfezionata, quindi possono verificarsi degli errori. Se preferite, potete consultare la versione originale in inglese qui:

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

Le informazioni contenute in questo post si basano su Dynamics 365. Dovrebbero funzionare anche in Dynamics AX 2012, ma non l'ho testato in modo esplicito.

Di recente mi è stato affidato il compito di aggiornare il valore di una singola dimensione finanziaria in base a una qualche logica.

Come probabilmente saprai, 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 a 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 spesso, quindi ho pensato di scrivere un articolo sulla mia ricetta preferita ;-)


Un metodo di utilità statico potrebbe apparire così:

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

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.

Ulteriori letture

Se ti è piaciuto questo post, potrebbero piacerti anche questi suggerimenti:


Condividi su BlueskyCondividi su FacebookCondividi su LinkedInCondividi su TumblrCondividi su XCondividi su LinkedInAggiungi su Pinterest

Mikkel Christensen

Sull'autore

Mikkel Christensen
Mikkel è il creatore e proprietario di miklix.com. Ha oltre 20 anni di esperienza come programmatore di computer/sviluppatore di software ed è attualmente impiegato a tempo pieno in una grande azienda IT europea. Quando non scrive sul blog, dedica il suo tempo libero a una vasta gamma di interessi, hobby e attività, che in qualche modo si riflettono nella varietà di argomenti trattati in questo sito.