Adicionar método de exibição ou edição por meio de extensão no Dynamics 365
Publicado: 16 de fevereiro de 2025 às 11:55:56 UTC
Neste artigo, explico como usar uma extensão de classe para adicionar um método de exibição a uma tabela e um formulário no Dynamics 365 for Operations, incluindo exemplos de código X++.
Add Display or Edit Method via Extension in Dynamics 365
Embora planejar usar métodos de exibição ou edição no Dynamics seja algo que geralmente deve fazer você considerar se talvez seja possível projetar sua solução de uma maneira diferente, às vezes eles são a melhor maneira de fazer isso.
Em versões anteriores do Dynamics e do Axapta, era muito fácil criar métodos de exibição ou edição em tabelas e formulários, mas quando recentemente precisei criar meu primeiro método de edição no Dynamics 365, descobri que o procedimento para fazer isso é um pouco diferente.
Evidentemente, há várias abordagens válidas, mas a que eu acho melhor (tanto em termos de intuitividade quanto de beleza de código) é usar uma extensão de classe. Sim, você pode usar extensões de classe para adicionar métodos a outros tipos de elementos além de classes - neste caso, uma tabela, mas funciona para formulários também.
Primeiro, crie uma nova classe. Você pode nomeá-la como quiser, mas por algum motivo ela deve ter o sufixo "_Extension". Digamos que você precise adicionar um método de exibição para CustTable, você poderia, por exemplo, nomeá-lo MyCustTable_Extension.
A classe deve ser decorada com ExtensionOf para que o sistema saiba o que você está estendendo, assim:
public final class MyCustTable_Extension
{
}
Agora você pode simplesmente implementar seu método de exibição nesta classe, como faria diretamente na tabela em versões anteriores do Dynamics - "this" até faz referência à tabela, para que você possa acessar campos e outros métodos.
Por exemplo, uma classe com um método de exibição simples (e completamente inútil) que apenas retorna o número da conta do cliente poderia ser assim:
public final class MyCustTable_Extension
{
public display CustAccount displayAccountNum()
{
;
return this.AccountNum;
}
}
Agora, para adicionar o método de exibição a um formulário (ou extensão de formulário, se você não puder editar o formulário diretamente), você precisa adicionar um campo ao formulário manualmente e certificar-se de usar o tipo correto (string neste exemplo).
Em seguida, no controle, você definiria DataSource como CustTable (ou qualquer que seja o nome da sua fonte de dados CustTable) e DataMethod como MyCustTable_Extension.displayAccountNum (certifique-se de incluir o nome da classe, caso contrário, o compilador não conseguirá encontrar o método).
E pronto :-)
Atualização: Não é mais necessário incluir o nome da classe de extensão ao adicionar o método de exibição a um formulário, mas no momento original da publicação, era. Estou deixando as informações aqui caso alguns leitores ainda estejam usando versões mais antigas.