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

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 nesta postagem são baseadas no Dynamics 365 for Operations, mas a maioria delas também funcionará no Dynamics AX 2012 (veja abaixo).

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

Isso é um pouco mais complicado do que uma pesquisa comum em uma tabela, mas se você souber como, não é tão ruim assim.

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

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

Você precisa então 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 para o campo, então 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í.

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

O manipulador de eventos deve ser parecido com isto (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);
}
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.