Atualizar valor da dimensão financeira do código X++ no Dynamics 365
Publicado: 16 de fevereiro de 2025 às 12:01:29 UTC
Este artigo explica como atualizar um valor de dimensão financeira do código X++ no Dynamics 365, incluindo um exemplo de código.
Update Financial Dimension Value from X++ Code in Dynamics 365
As informações nesta postagem são baseadas no Dynamics 365. Elas também devem funcionar no Dynamics AX 2012, mas não as testei explicitamente.
Recentemente, fui encarregado de atualizar o valor de uma única dimensão financeira com base em alguma lógica de formulário.
Como você provavelmente sabe, desde o Dynamics AX 2012 as dimensões financeiras são armazenadas em tabelas separadas e referenciadas por meio de um RecId, geralmente em um campo DefaultDimension.
Toda a estrutura para lidar com dimensões é um tanto complexa e muitas vezes me vejo tendo que reler a documentação sobre ela, talvez porque não seja algo com que trabalho com tanta frequência.
De qualquer forma, atualizar um campo em um conjunto de dimensões existente é algo que acontece com frequência, então pensei em escrever sobre minha receita favorita ;-)
Um método utilitário estático poderia ser assim:
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;
}
O método retorna um novo (ou o mesmo) DimensionDefault RecId, portanto, ao atualizar um valor de dimensão para um registro (o que provavelmente é o cenário mais comum), você deve atualizar o campo de dimensão nesse registro com o novo valor.