Miklix

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

Publicado: 16 de fevereiro de 2025 às 11:34:00 UTC
Última atualização: 12 de janeiro de 2026 às 08:56:14 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 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:

Creating a Lookup Field for a Financial Dimension in Dynamics 365

A informação neste artigo baseia-se no Dynamics 365 for Operations, mas a maior parte também funcionará para o Dynamics AX 2012 (ver abaixo).

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

Isto é um pouco mais complicado do que uma consulta normal numa tabela, mas se souberes como, na verdade não é assim tão mau.

Felizmente, a aplicação padrão fornece um formulário de pesquisa conveniente (DimensionLookup) que pode ser usado para esse propósito, se simplesmente lhe indicar qual o atributo de dimensão a consultar.

Primeiro, tens de criar o campo de formulário em si. Isto pode basear-se num campo de tabela ou num 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 dado estendido DimensionValue.

Depois precisa de criar um gestor de eventos no OnLookup para o campo. Para criar um gestor de eventos, clique com o botão direito no evento OnLookup para o campo, depois escolha "Copiar método do gestor de eventos". Depois podes colar um método de gestor de eventos vazio numa classe e editá-lo a partir daí.

Aviso: A maior parte disto também funciona para o Dynamics AX 2012, mas em vez de criar um gestor de eventos, pode sobrescrever o método de pesquisa do campo de formulário.

O gestor de eventos deve ter um aspeto semelhante a isto (substituir 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 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.