Miklix

Adicionar método de visualização ou edição através de extensão no Dynamics 365

Publicado: 16 de fevereiro de 2025 às 11:56:00 UTC

Neste artigo, explico como utilizar uma extensão de classe para adicionar um método de visualizaçã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 a tornar acessível ao maior número possível de pessoas. Infelizmente, a tradução automática ainda não é uma tecnologia aperfeiçoada, pelo que podem ocorrer erros. Se preferir, pode ver a versão original em inglês aqui:

Add Display or Edit Method via Extension in Dynamics 365

Embora planear utilizar métodos de visualização ou edição no Dynamics seja algo que geralmente o deve fazer considerar se talvez seja possível conceber a sua solução de uma forma diferente, por vezes são a melhor forma de o fazer.

Nas versões anteriores do Dynamics e do Axapta, era muito fácil criar métodos de visualização ou edição em tabelas e formulários, mas quando recentemente precisei de criar o meu primeiro método de edição no Dynamics 365, descobri que o procedimento para o fazer é um pouco diferente.

É evidente que existem várias abordagens válidas, mas a que considero melhor (tanto em termos de intuitividade como de beleza do código) é utilizar uma extensão de classe. Sim, pode utilizar extensões de classes para adicionar métodos a outros tipos de elementos para além das classes — neste caso, uma tabela — mas isto também funciona para formulários.

Primeiro, crie uma nova classe. Pode dar-lhe o nome que quiser, mas por algum motivo deve ter o sufixo "_Extension". Digamos que precisa de adicionar um método de visualização à CustTable.

A classe deve ser decorada com ExtensionOf para que o sistema saiba o que está a estender, assim:

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

Agora pode simplesmente implementar o seu método de visualização nesta classe, como faria diretamente na tabela nas versões anteriores do Dynamics - "this" até faz referência à tabela, para que possa aceder a campos e outros métodos.

Por exemplo, uma classe com um método de visualização simples (e completamente inútil) que apenas devolve 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 visualização a um formulário (ou extensão de formulário, se não puder editar o formulário diretamente), precisa de adicionar um campo ao formulário manualmente e certificar-se de que utiliza o tipo correto (string neste exemplo).

De seguida, no controlo, 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 que inclui o nome da classe, caso contrário o compilador não conseguirá encontrar o método).

E já está :-)

Actualização: Já não é necessário incluir o nome da classe de extensão ao adicionar o método de visualização a um formulário, mas no momento original da publicação era. Estou a deixar aqui a informação caso alguns leitores ainda estejam a usar versões mais antigas.

Partilhar no BlueskyPartilhar no FacebookPartilhar no LinkedInPartilhar no TumblrPartilhar em XPartilhar no LinkedInFixar no Pinterest

Mikkel Bang Christensen

Sobre o autor

Mikkel Bang Christensen
Mikkel é o criador e proprietário do miklix.com. Tem mais de 20 anos de experiência como programador informático/desenvolvedor de software profissional e trabalha atualmente a tempo inteiro para uma grande empresa europeia de TI. Quando não está a escrever no blogue, dedica o seu tempo livre a um vasto leque de interesses, passatempos e actividades, que podem, em certa medida, refletir-se na variedade de tópicos abordados neste sítio Web.