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

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 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 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:

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, 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.

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

Mikkel Bang Christensen

Sobre o autor

Mikkel Bang 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.