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++.
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:
- Coloque o Dynamics 365 FO Virtual Machine Dev ou Test no modo de manutenção
- Atualizar valor da dimensão financeira do código X++ no Dynamics 365
- O Visual Studio trava na inicialização ao carregar projetos recentes
