Miklix

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

Publicado: 16 de fevereiro de 2025 às 12:01:29 UTC
Última atualização: 13 de novembro de 2025 às 13:37:34 UTC

Este artigo explica como atualizar o valor de uma dimensão financeira a partir de código X++ no Dynamics 365, incluindo um exemplo de código.


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

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

As informações neste post são baseadas no Dynamics 365. Elas também devem funcionar no Dynamics AX 2012, mas não as testei explicitamente.

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

Como você provavelmente já sabe, no 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.

A estrutura geral para lidar com dimensões é um tanto complexa e frequentemente me vejo obrigado a reler a documentação sobre o assunto, talvez porque não seja algo com que eu trabalhe com muita 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 ter a seguinte 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;
}

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

Leitura adicional

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


Compartilhe no BlueskyCompartilhe no FacebookCompartilhe no LinkedInCompartilhe no TumblrCompartilhar em XCompartilhe no LinkedInFixar no Pinterest

Mikkel Christensen

Sobre o autor

Mikkel Christensen
Mikkel é o criador e proprietário do miklix.com. Ele tem mais de 20 anos de experiência como programador de computador/desenvolvedor de software profissional e atualmente trabalha em tempo integral para uma grande empresa europeia de TI. Quando não está blogando, ele dedica seu tempo livre a uma grande variedade de interesses, hobbies e atividades, o que pode, até certo ponto, refletir-se na variedade de tópicos abordados neste site.