Miklix

Mettre à jour la valeur de la dimension financière à partir du code X++ dans Dynamics 365

Publié : 16 février 2025 à 12:01:04 UTC
Dernière mise à jour : 13 novembre 2025 à 13:36:12 UTC

Cet article explique comment mettre à jour la valeur d'une dimension financière à partir de code X++ dans Dynamics 365, et inclut un exemple de code.


Cette page a été traduite de l'anglais afin de la rendre accessible au plus grand nombre. Malheureusement, la traduction automatique n'est pas encore une technologie parfaite, et des erreurs peuvent donc se produire. Si vous préférez, vous pouvez consulter la version originale en anglais ici :

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

Les informations contenues dans cet article sont basées sur Dynamics 365. Elles devraient également fonctionner dans Dynamics AX 2012, mais je ne l'ai pas testé explicitement.

J'ai récemment été chargé de mettre à jour la valeur d'une seule dimension financière en fonction d'une certaine logique de formulaire.

Comme vous le savez probablement, depuis Dynamics AX 2012, les dimensions financières sont stockées dans des tables séparées et référencées via un RecId, généralement dans un champ DefaultDimension.

L'ensemble du système de gestion des dimensions est assez complexe et je me retrouve souvent à devoir relire la documentation à ce sujet, peut-être parce que je ne l'utilise pas très souvent.

Bref, la mise à jour d'un champ dans un ensemble de dimensions existant est une opération fréquente, alors j'ai pensé partager ma méthode préférée ;-)


Une méthode utilitaire statique pourrait ressembler à ceci :

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

La méthode renvoie un nouvel (ou le même) DimensionDefault RecId, donc si vous mettez à jour la valeur d'une dimension pour un enregistrement - ce qui est probablement le scénario le plus courant - vous devez vous assurer de mettre à jour le champ de dimension de cet enregistrement avec la nouvelle valeur.

Lectures complémentaires

Si vous avez apprécié cet article, vous aimerez peut-être aussi ces suggestions :


Partager sur BlueskyPartager sur FacebookPartager sur LinkedInPartager sur TumblrPartager sur XPartager sur LinkedInÉpingler sur Pinterest

Mikkel Christensen

A propos de l'auteur

Mikkel Christensen
Mikkel est le créateur et le propriétaire de miklix.com. Il a plus de 20 ans d'expérience en tant que programmeur informatique professionnel/développeur de logiciels et travaille actuellement à plein temps pour une grande entreprise européenne de TI. Lorsqu'il ne blogue pas, il consacre son temps libre à un large éventail d'intérêts, de passe-temps et d'activités, ce qui peut se refléter dans une certaine mesure dans la variété des sujets abordés sur ce site web.