Mettre à jour la valeur de la dimension financière à partir du code X++ dans Dynamics 365
Publié : 16 février 2025 à 12 h 05 min 28 s UTC
Cet article explique comment mettre à jour une valeur de dimension financière à partir du code X++ dans Dynamics 365, y compris un exemple de code.
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 les ai pas explicitement testées.
J'ai récemment été chargé de mettre à jour la valeur d'une seule dimension financière en fonction d'une certaine logique de forme.
Comme vous le savez probablement, dans 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 cadre de gestion des dimensions est un peu complexe et je me retrouve souvent à devoir relire la documentation à ce sujet, peut-être parce que ce n'est pas quelque chose avec lequel je travaille si souvent.
Quoi qu'il en soit, la mise à jour d'un champ dans un ensemble de dimensions existant est quelque chose qui arrive fréquemment, alors j'ai pensé que je ferais un article sur ma recette préférée ;-)
Une méthode utilitaire statique pourrait ressembler à ceci :
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 retourne un nouveau (ou le même) DimensionDefault RecId, donc si vous mettez à jour une valeur de 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.