Miklix

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.


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

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.