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++.
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:
- Atualizar valor da dimensão financeira do código X++ no Dynamics 365
- O Visual Studio trava na inicialização ao carregar projetos recentes
- Adicionar método de exibição ou edição por meio de extensão no Dynamics 365
