Atualizar valor da dimensão financeira do código X++ no Dynamics 365
Publicado: 16 de fevereiro de 2025 às 12:01:31 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 neste post são baseadas no Dynamics 365. 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 provavelmente sabe, desde o Dynamics AX 2012 as dimensões financeiras são armazenadas em tabelas separadas e referenciadas através de um RecId, normalmente num campo DefaultDimension.
Toda a estrutura para lidar com dimensões é algo complexa e muitas vezes vejo-me a ter de reler a documentação sobre a mesma, talvez porque não é algo com que trabalhe com tanta frequência.
De qualquer forma, atualizar um campo num conjunto de dimensões existente é algo que acontece com frequência, por isso pensei em escrever sobre a 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, pelo que, ao atualizar um valor de dimensão para um registo (o que é provavelmente o cenário mais comum), deve atualizar o campo de dimensão nesse registo com o novo valor.