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

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


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 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:

[ExtensionOf(tableStr(CustTable))]
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:

[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, 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.

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

Mikkel Bang Christensen

Sobre o autor

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