Adicionar uma extensão de tabela a um projeto
Se desejar modificar os campos, os grupos de campos, os índices, os mapeamentos ou as relações de uma tabela, você poderá criar uma extensão da tabela e fazer as alterações necessárias. Além disso, você pode adicionar campos e adicionar campos a grupos de campos.
Para adicionar campos, clique com o botão direito do mouse no nó Campos da tabela e selecione Novo ou selecione e arraste um campo da AOT ou da janela Gerenciador de Soluções para o nó Campos da tabela. Depois que o campo for adicionado à tabela, você poderá selecioná-lo e arrastá-lo para um grupo de campos existente ou criar um novo grupo de campos e arrastar o campo para ele. O campo e/ou o grupo de campos adicionado será mostrado em negrito, enquanto os campos e grupos de campos existentes serão exibidos em itálico.
Este é um exemplo de adição do campo AccountNum de AOT > Tipos de Dados > Tipos de Dados Estendidos ao nó Campos da tabela FMCustomer.myExtension.

Índices de tabela
Um índice pode acelerar as pesquisas de banco de dados. Se você adicionar campos a uma tabela, talvez também queira adicionar um índice dedicado. Você pode usar campos novos e existentes na criação do índice. Depois de criar a extensão da tabela desejada, você pode adicionar um índice da mesma maneira como adicionaria um índice a uma nova tabela. Não é possível usar uma extensão para criar um índice exclusivo. Esse tipo de desenvolvimento é intrusivo e, portanto, não permitido.
Assim como na adição de um índice a uma tabela depois da adição de novos campos, talvez você também precise criar uma relação se o novo campo for vinculado a outra tabela. A definição de relações pode garantir a integridade referencial descrevendo o vínculo entre as duas tabelas. A adição de uma nova relação a uma tabela estendida segue o mesmo processo que a adição de uma relação a uma nova tabela.
Você pode ajustar o rótulo ou o texto de ajuda da tabela ou do campo individual, bem como outras propriedades disponíveis. Se você definir a propriedade Criado por, Hora de Criação dos Dados, Modificado por ou Data e Hora de Modificação como Sim, ela adicionará as informações de rastreamento correspondentes sobre o usuário à tabela quando os registros forem criados ou atualizados. Nem todas as propriedades listadas na janela Propriedades podem ser ajustadas. Por exemplo, as propriedades de rastreamento mencionadas não poderão ser alteradas para Não se forem definidas como Sim na tabela base. Se uma propriedade estiver esmaecida, ela não será editável.
Lógica de negócios de tabela
Os manipuladores de eventos também podem ser implementados e chamados por meio das implementações base dos métodos de tabela. Primeiro, você precisa criar uma nova classe que estenda a tabela desejada e permita acesso a seus campos e métodos. A classe deve incluir os atributos final e [ExtensionOf()] e ter o sufixo _Extension. O exemplo de código a seguir mostra como criar uma nova classe que estende a tabela InventTable.
[ExtensionOf(tableStr(InventTable))]
final class InventTableMy_Extension
{
public void myDefaultInventLocationId()
{
//Contains organization-specific logic to initialize the new field here.
this.MyInventLocationID = this.inventLocationId();
}
}
Em seguida, você adicionará métodos à classe ampliada e usará o novo método de um manipulador de eventos. A seguir está um exemplo de um manipulador de eventos de classe InventTable.
class InventTableMy_EventHandler
{
[DataEventHandler(tableStr(InventTable), DataEventType::Inserting)]
public static void InventTable_onInserting(Common sender, DataEventArgs e)
{
InventTable inventTable = sender as InventTable;
// Call the method as if it was defined directly on InventTable.
inventTable.myDefaultInventLocationId();
}
}