Miklix

Atualizar valor da dimensão financeira do código X++ no Dynamics 365

Publicado: 16 de fevereiro de 2025 às 12:01:31 UTC
Última atualização: 13 de novembro de 2025 às 13:37:36 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.


Esta página foi traduzida automaticamente do inglês para a tornar acessível ao maior número possível de pessoas. Infelizmente, a tradução automática ainda não é uma tecnologia aperfeiçoada, pelo que podem ocorrer erros. Se preferir, pode ver a versão original em inglês aqui:

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

As informações nesta postagem são baseadas no Dynamics 365. Ele também deve funcionar no Dynamics AX 2012, mas eu não o testei explicitamente.

Recentemente, fui incumbido de atualizar o valor de uma única dimensão financeira com base em alguma lógica de forma.

Como você provavelmente sabe, como as dimensões financeiras do Dynamics AX 2012 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 pouco complexa e muitas vezes me vejo tendo que reler a documentação sobre ela, talvez porque não seja algo com que eu trabalho com tanta frequência.

De qualquer forma, atualizar um campo em um conjunto de dimensões existente é algo que aparece com frequência, então pensei em escrever minha receita favorita ;-)


Um método utilitário estático pode ter esta aparência:

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

O método retorna um novo (ou o mesmo) DimensionDefault RecId, portanto, se atualizar um valor de dimensão para um registro - que é provavelmente o cenário mais comum - você deve atualizar o campo de dimensão nesse registro com o novo valor.

Leitura adicional

Se gostou deste post, também pode gostar destas sugestões:


Partilhar no BlueskyPartilhar no FacebookPartilhar no LinkedInPartilhar no TumblrPartilhar em XPartilhar no LinkedInFixar no Pinterest

Mikkel Christensen

Sobre o autor

Mikkel Christensen
Mikkel é o criador e proprietário do miklix.com. Tem mais de 20 anos de experiência como programador informático/desenvolvedor de software profissional e trabalha atualmente a tempo inteiro para uma grande empresa europeia de TI. Quando não está a escrever no blogue, dedica o seu tempo livre a um vasto leque de interesses, passatempos e actividades, que podem, em certa medida, refletir-se na variedade de tópicos abordados neste sítio Web.