Miklix

Criando um campo de pesquisa para uma dimensão financeira no Dynamics 365

Publicado: 16 de fevereiro de 2025 às 11:33:59 UTC
Última atualização: 12 de janeiro de 2026 às 08:56:13 UTC

Este artigo explica como criar um campo de pesquisa para uma dimensão financeira no Dynamics 365 for Operations, incluindo um exemplo de código X++.


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:

Creating a Lookup Field for a Financial Dimension in Dynamics 365

As informações neste post são baseadas no Dynamics 365 for Operations, mas a maior parte delas também funciona para o Dynamics AX 2012 (veja abaixo).

Recentemente, fui incumbido de criar um novo campo no qual fosse possível especificar uma única dimensão financeira, neste caso, Produto. Obviamente, o novo campo também deveria ser capaz de consultar os valores válidos dessa dimensão.

Isso é um pouco mais complicado do que uma simples pesquisa em uma tabela, mas se você souber como, na verdade não é tão difícil.

Felizmente, o aplicativo padrão fornece um formulário de pesquisa conveniente (DimensionLookup) que pode ser usado para essa finalidade, bastando indicar qual atributo de dimensão pesquisar.

Primeiro, você precisa criar o próprio campo do formulário. Ele pode ser baseado em um campo de tabela ou em um método de edição; não importa para a pesquisa em si, mas de uma forma ou de outra, deve usar o tipo de dados estendido DimensionValue.

Em seguida, você precisa criar um manipulador de eventos OnLookup para o campo. Para criar um manipulador de eventos, clique com o botão direito do mouse no evento OnLookup do campo e escolha "Copiar método do manipulador de eventos". Você pode então colar um método de manipulador de eventos vazio em uma classe e editá-lo a partir daí.

Observação: A maior parte disso também funcionará para o Dynamics AX 2012, mas em vez de criar um manipulador de eventos, você pode substituir o método de pesquisa do campo do formulário.

O manipulador de eventos deve ter uma aparência semelhante a esta (substitua o nome do formulário e o nome do campo conforme necessário):

[
    FormControlEventHandler(formControlStr( MyForm,
                                            MyProductDimField),
                            FormControlEventType::Lookup)
]
public static void MyProductDimField_OnLookup(  FormControl _sender,
                                                FormControlEventArgs _e)
{
    FormStringControl   control;
    Args                args;
    FormRun             formRun;
    DimensionAttribute  dimAttribute;
    ;

    dimAttribute    =   DimensionAttribute::findByName('Product');
    args            =   new Args();
    args.record(dimAttribute);
    args.caller(_sender);
    args.name(formStr(DimensionLookup));
    formRun         =   classFactory.formRunClass(args);formRun.init();
    control         =   _sender as FormStringControl;
    control.performFormLookup(formRun);
}

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.