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.

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

Mikkel Bang Christensen

Sull'autore

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