Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
Grupos de interesse da comunidade mudaram do Yammer para o Microsoft Viva Engage. Para ingressar em uma comunidade do Viva Engage e participar das discussões mais recentes, preencha o formulário Solicitar acesso às Finanças e Operações viva engage community e escolha a comunidade que você deseja ingressar.
Este artigo descreve a biblioteca de classes em X++.
Há dois tipos de classes: classes de aplicativo e classes do sistema.
- Classes de aplicativo – essas classes são implementadas em X++. Eles estão disponíveis no nó Classes de Código > no Application Explorer.
- Classes do sistema – essas classes às vezes são conhecidas como classes de kernel. Eles são listados no nó Classes de Documentação > do Sistema no Application Explorer. O código-fonte dessas classes não está disponível. Para obter uma lista das classes do sistema, consulte API, classe e referência de tabela.
Estrutura típica de uma classe de aplicativo
Os seguintes tipos de bloco de código são padrão para classes de aplicativo:
- declarações de classe e variável: a declaração de classe contém modificadores, como pública, privada e estendida.
- declarações de variável: estes são os membros de campo para objetos que são construídos a partir da classe. Quando você digita a palavra-chave em uma variável de instância de classe, o IntelliSense pode mostrar uma lista dos membros.
- novo método: esse método cria uma instância da classe. O construtor só pode ser chamado usando a nova palavra-chave. Classes derivadas podem chamar o novo método de seu construtor chamando a referência de super método. Para obter mais informações, consulte a herança X++.
- método finalize: esse método finaliza uma instância da classe. Esse método é o método destruidor. No entanto, é apenas um destruidor por convenção. O sistema não chama automaticamente o método de finalização durante a coleta de lixo.
Métodos adicionais para uma classe têm os seguintes tipos:
- Métodos de instância
- Métodos estáticos
- Métodos principais
Métodos podem ser criados em muitos tipos de itens. Aqui estão alguns exemplos:
- Aulas
- Mapas
- Visões
- Conjuntos de dados
- Formulários
- Queries
Substituindo classes de aplicativo por classes do sistema
Você deve usar as classes de aplicativo substitutas em vez das classes do sistema que elas estendem.
No Application Explorer, em Classes de Documentação > do Sistema, várias classes de kernel ou sistema têm nomes que começam com um x minúsculo. Essas classes são conhecidas como classes do sistema x. Exemplos dessas classes de sistema são xApplication e xVersionControl. Algumas dessas classes são estendidas por classes de aplicativo. Por exemplo, a classe Application estende a classe do sistema xApplication .
As classes que derivam de classes x-system são conhecidas como classes de aplicativo substitutas. No Application Explorer, no nó Classes , o ícone ao lado das classes de aplicativo substituto difere do ícone padrão.
Classes do sistema x
Algumas das classes de aplicativo substituto são associadas a uma variável global especial que representa uma instância da classe. Por exemplo, a variável appl faz referência a um objeto pré-instanciado da classe Application . A vantagem da variável appl é que o sistema mantém o objeto em todo o escopo da sessão. Seu código seria menos eficiente se ele usou repetidamente a nova sintaxe Application() para obter uma instância da classe Application . Você não deve usar a classe do sistema xApplication . Em vez disso, use a classe de aplicativo substituto do aplicativo.
Você pode referenciar os membros estáticos da classe Application usando a seguinte sintaxe padrão: Application::checkForNewBatchJobs(). No entanto, para fazer referência aos membros da instância da classe Application , você deverá usar a variável appl dessa classe, se ela existir. Esse padrão se aplica à maioria das classes do sistema x. A classe de aplicativo substituto de sessão é uma exceção, porque não há nenhuma variável global especial para Sessão.
A tabela a seguir lista as classes do sistema x que têm uma classe de aplicativo substituto correspondente. As variáveis globais especiais também são mostradas para as classes que têm uma.
| Classe de aplicativo | Classe x-system | Variável global |
|---|---|---|
| Argumentos | xArgs | Não aplicável |
| Aplicativo | xApplication | Appl |
| ClassFactory | xClassFactory | classFactory |
| Empresa | xCompany | appl.company |
| Global | xGlobal | Não aplicável |
| Informações | xInfo | Infolog |
| MenuFunction | xMenuFunction | Não aplicável |
| Session | xSession | Não aplicável |
| VersionControl | xVersionControl | versionControl |
Exemplo de classes do sistema x
O exemplo a seguir mostra a sintaxe para usar várias variáveis especiais que fazem referência a instâncias das classes de aplicativo substitutas.
TreeNode treeNode;
Args args;
FormRun formRun;
// appl variable
info(appl.buildNo());
// company variable
appl.company().reloadRights();
// infolog variable
treeNode = infolog.findNode("\\forms\\custTable");
info(treeNode.AOTgetProperty("Name"));
// Output is "CustTable".
// classFactory variable
args = new Args(formstr(Batch));
formRun = classFactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.detach();
info("Method is ending. This is a message in the Infolog.");
// Output is "Method is ending. This is a message in the Infolog."
Classes de processamento em lote
Implemente classes usando o sistema de processamento em lote e estendendo as classes RunBase e RunBaseBatch . Para remover o botão Recorrência da caixa de diálogo processamento do Lote , use o método Args::p armEnum . Recomendamos que você designe uma classe para ser executada como um método de lote associado ao servidor. Os métodos de lote associados ao servidor são mais seguros do que os métodos em lote que não são associados ao servidor pelos seguintes motivos:
- O método é executado usando as permissões do usuário que enviou o método.
- O método só pode usar métodos específicos de classe Info e Global para interagir com o cliente que o está processando. Essa restrição limita a interação com o cliente.
Habilitar uma classe para ser executada como um método de lote associado ao servidor
Crie uma classe que estenda a classe RunBaseBatch .
Substitua o método RunBaseBatch.runsImpersonated para retornar um valor verdadeiro, conforme mostrado no exemplo a seguir.
public boolean runsImpersonated() { return true; }Confirme se a classe chama apenas os seguintes métodos de classe Info e Global :
- adicionar
- Info.copy
- Info.cut
- Info.import
- Info.export
- Info.line
- Info.num
- Global::error
- Global::info
- Global::warning
Os métodos Info.line e Info.num são herdados da classe xInfo .
Removendo o botão Recorrência da caixa de diálogo de processamento em lote
Ao implementar uma classe usando o sistema de processamento em lote, você pode remover o botão Recorrência chamando o método Args.parmEnum e passando o valor de enumeração do sistema NoYes::Yes . A enumeração do sistema NoYes determina se o botão Recorrência é removido da caixa de diálogo. O valor padrão é NoYes::No.
No exemplo a seguir, a classe InventTransferMultiShip é implementada. O método BatchDialog::main cria a caixa de diálogo processamento do Lote .
static void noRecurrenceButton(Args _args)
{
Args a;
InventTransferMultiShip inventTransferMultiShip;
a = new Args();
inventTransferMultiShip = InventTransferMultiShip::construct();
a.caller(inventTransferMultiShip);
a.parmEnum(NoYes::Yes);
BatchDialog::main(a);
}
Classes de manipulação de imagem
Duas classes do sistema permitem manipular elementos gráficos e ícones: Imagem e Imagelist.
- Imagem – Essa classe permite carregar, salvar e manipular imagens individuais. Por exemplo, você pode capturar uma tela e salvá-la como uma imagem, cortar ou girar uma imagem ou manipular a profundidade da cor.
- Imagelist – Essa classe permite que você trabalhe com um conjunto de imagens que têm propriedades comuns, como o tamanho e a cor da transparência. Você pode exibir as listas de imagens usadas nas classes de aplicativo ImageListAppl .
Modelo de objeto de consulta
O modelo de objeto de consulta contém classes usadas para definir e executar uma consulta. Os objetos de consulta são usados para definir a fonte de dados de consulta, os campos retornados, os intervalos de registros e as relações com fontes de dados filho. As classes de consulta ficam mais visíveis quando você cria uma consulta dinâmica no código, mas elas também são usadas nos bastidores quando você cria uma consulta estática no Application Explorer.
A tabela a seguir descreve as classes no modelo de objeto de consulta.
| Classe de sistema | Description |
|---|---|
| QueryRun | Essa classe executa a consulta e busca os dados. |
| Query | Essa classe contém algumas propriedades e tem uma ou mais fontes de dados relacionadas. É o nível superior da definição de consulta. |
| QueryBuildDataSource | Essa classe define o acesso a uma única fonte de dados na consulta. Se houver mais de uma fonte de dados no mesmo nível em uma consulta, instruções SQL separadas serão produzidas e serão executadas sequencialmente. Se uma fonte de dados for filho de outra fonte de dados, uma junção será criada entre as duas fontes de dados. |
| QueryBuildFieldList | Essa classe define os campos retornados do banco de dados. Por padrão, a lista de campos é dinâmica e todos os campos são retornados da tabela, do mapa ou da exibição da fonte de dados. Cada fonte de dados tem apenas um objeto QueryBuildFieldList . Este objeto contém informações sobre todos os campos selecionados. Você pode especificar funções de agregação, como SOMA, CONTAGEM e AVG, no objeto de lista de campos. |
| QueryBuildRange | Essa classe define um subconjunto de registros retornados, com base em um único campo. Um intervalo é convertido em uma cláusula WHERE na instrução SQL de consulta. Se mais de um campo for usado para limitar a consulta (cláusula WHERE ), a fonte de dados conterá mais de um intervalo. |
| QueryBuildDynalink | Essa classe contém informações sobre uma relação (limitação) a um registro externo. Quando a consulta é executada, essas informações são convertidas em entradas adicionais na cláusula WHERE da instrução SQL de consulta. Essa classe só pode existir na fonte de dados pai de uma consulta. Os formulários usam a função quando duas fontes de dados são sincronizadas. A fonte de dados filho conterá uma ou mais DLLs para a fonte de dados pai. A função é usada mesmo se as duas fontes de dados forem colocadas em duas formas diferentes, mas ainda estiverem sincronizadas. |
| QueryBuildLink | Essa classe especifica a relação entre as duas fontes de dados na junção. Essa classe só pode existir em uma fonte de dados filho. |
Você também pode usar a API SysDa para consultar dados.
Visão geral das classes do sistema
A origem das classes do sistema não está disponível. Uma classe de sistema pode ter as seguintes características:
- Métodos estáticos (ou métodos de classe)
- Métodos dinâmicos
- Propriedades – essas propriedades são funções membro que são usadas para definir propriedades. Um exemplo é LeftMargin.
Você não pode substituir os métodos de classe do sistema. Não é nossa intenção que você use as classes do sistema para projetar seus objetos de aplicativo do zero. Em vez disso, use-os para estender ou modificar a funcionalidade padrão no Application Explorer. Por exemplo, você pode adicionar dinamicamente informações extras a um relatório existente. Como alternativa, você pode alterar as opções disponíveis em uma página, com base na seleção do usuário em uma página anterior.
Classes da coleção
As classes de coleção permitem criar listas, conjuntos, structs, mapas e matrizes.
Classes de objeto de aplicativo
Essas classes do sistema contêm funções que são ativadas sempre que você usa o Application Explorer para criar seu aplicativo. Por exemplo, o sistema usa a classe FormDesign quando você define o layout do formulário no nó Designs no Application Explorer. Essas classes também permitem que você crie e modifique objetos de aplicativo.
Classes de integração
A integração com o ambiente normalmente é implementada por classes. Aqui estão alguns exemplos das classes nesta categoria:
- COM – A chamada de métodos em objetos COM.
- DLL – A chamada das funções de DLL do Microsoft Windows.
- E/S – ler e gravar arquivos externos.
- ODBCConnection – uma interface ODBC (Open Database Connectivity) para um banco de dados estrangeiro.