Miklix

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
Última atualização: 12 de janeiro de 2026 às 08:57:26 UTC

Neste artigo, explico como usar uma extensão de classe para adicionar um método de exibição a uma tabela e a um formulário no Dynamics 365 for Operations, incluindo exemplos 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:

Add Display or Edit Method via Extension in Dynamics 365

Embora planejar o uso de métodos de exibição ou edição no Dynamics geralmente deva levar você a considerar se talvez seja possível projetar sua solução de uma maneira diferente, ocasionalmente essa é a melhor opção.

Nas 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 fazê-lo é um pouco diferente.

Existem, evidentemente, várias abordagens válidas, mas a que considero melhor (tanto em termos de intuitividade quanto de elegância do 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 também funciona para formulários.

Primeiro, crie uma nova classe. Você pode dar o nome que quiser, mas por algum motivo ela precisa ter o sufixo "_Extension". Digamos que você precise adicionar um método de exibição à classe CustTable; você poderia, por exemplo, chamá-la de MyCustTable_Extension.

A classe deve ser decorada com ExtensionOf para que o sistema saiba o que você está estendendo, da seguinte forma:

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
}

Agora você pode implementar seu método de exibição nesta classe, como faria diretamente na tabela em versões anteriores do Dynamics - "this" inclusive faz referência à tabela, permitindo o acesso a 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 ter a seguinte aparência:

[ExtensionOf(tableStr(CustTable))]
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, caso não seja possível 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 era necessário na data de publicação original. Estou deixando a informação aqui caso alguns leitores ainda estejam usando versões antigas.

Leitura adicional

Se você gostou deste post, você também pode gostar destas sugestões:


Compartilhe no BlueskyCompartilhe no FacebookCompartilhe no LinkedInCompartilhe no TumblrCompartilhar em XCompartilhe no LinkedInFixar no Pinterest

Mikkel Christensen

Sobre o autor

Mikkel 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.