Del via


X++-klassebibliotek

Note

Interessegrupper for fellesskapet har nå flyttet fra Yammer til Microsoft Viva Engage. Hvis du vil bli med i et Viva Engage-fellesskap og delta i de siste diskusjonene, fyller du ut skjemaet Be om tilgang til Finance and Operations Viva Engage Community og velger fellesskapet du vil bli med i.

Denne artikkelen beskriver biblioteket med klasser i X++.

Det finnes to typer klasser: programklasser og systemklasser.

  • Programklasser – Disse klassene implementeres i X++. De er tilgjengelige i noden Kodeklasser > i Programutforsker.
  • Systemklasser – disse klassene kalles noen ganger kjerneklasser. De er oppført under noden Systemdokumentasjonsklasser > i Programutforsker. Kildekoden for disse klassene er ikke tilgjengelig. Hvis du vil ha en liste over systemklassene, kan du se API, klasse og tabellreferanse.

Typisk struktur for en programklasse

Følgende kodeblokktyper er standard for programklasser:

  • klasse- og variabeldeklarasjoner: Klassedeklarasjonen inneholder modifikatorer, for eksempel offentlig, privat og utvider.
  • variable deklarasjoner: Dette er feltmedlemmene for objekter som er konstruert fra klassen. Når du skriver inn nøkkelordet dette på en klasseforekomstvariabel, kan IntelliSense vise en liste over medlemmene.
  • ny metode: Denne metoden oppretter en forekomst av klassen. Konstruktøren kan bare kalles ved hjelp av det nye nøkkelordet. Avledede klasser kan kalle opp den nye metoden til konstruktøren ved å kalle supermetodereferansen. Hvis du vil ha mer informasjon, kan du se X++-arv.
  • fullfør metode: Denne metoden fullfører en forekomst av klassen. Denne metoden er destructor-metoden. Det er imidlertid bare en destructor etter konvensjon. Systemet kaller ikke automatisk fullføringsmetoden under søppelinnsamling.

Flere metoder for en klasse har følgende typer:

  • Forekomstmetoder
  • Statiske metoder
  • Hovedmetoder

Metoder kan opprettes på mange typer elementer. Her er noen eksempler:

  • Klasser
  • Maps
  • Views
  • Datasett
  • Skjemaer
  • Spørringer

Erstatte programklasser for systemklasser

Du bør bruke erstatningsprogramklassene i stedet for systemklassene de utvider.

I Programutforsker, under Systemdokumentasjonsklasser>, har flere kjerne- eller systemklasser navn som begynner med små bokstaver x. Disse klassene kalles x-systemklasser. Eksempler på disse systemklassene er xApplication og xVersionControl. Noen av disse klassene utvides av programklasser. Programklassen utvider for eksempel systemklassen xApplication.

Klassene som kommer fra x-systemklasser, kalles erstatningsprogramklasser. I Programutforsker, under Klasser-noden , er ikonet ved siden av erstatningsprogramklassene forskjellig fra standardikonet.

x-systemklasser

Noen av erstatningsprogramklassene er knyttet til en spesiell global variabel som representerer en forekomst av klassen. Applvariabelen refererer for eksempel til et forhåndsinnrettet objekt fra programklassen. Fordelen med appl-variabelen er at systemet opprettholder objektet gjennom hele omfanget av økten. Koden din ville vært mindre effektiv hvis den gjentatte ganger brukte den nye application() -syntaksen til å hente en forekomst av programklassen . Du bør ikke bruke systemklassen xApplication . Bruk i stedet programklassen program for programerstatning .

Du kan referere til statiske medlemmer av programklassen ved hjelp av følgende standardsyntaks: Application::checkForNewBatchJobs(). Hvis du vil referere til forekomstmedlemmene i programklassen , bør du imidlertid bruke klassens appl-variabel hvis den finnes. Dette mønsteret gjelder for de fleste x-systemklassene. Programklassen for økterstatning er ett unntak, fordi det ikke finnes noen spesiell global variabel for Økt.

Tabellen nedenfor viser x-systemklassene som har en tilsvarende erstatningsprogramklasse. De spesielle globale variablene vises også for de klassene som har en.

Programklasse x-systemklasse Global variabel
Args xArgs Gjelder ikke
Program xApplication appl
ClassFactory xClassFactory classFactory
Firma xCompany appl.company
Global xGlobal Gjelder ikke
Info xInfo Infologg
MenuFunction xMenuFunction Gjelder ikke
Økt xSession Gjelder ikke
VersionControl xVersionControl versionControl

Eksempel på x-systemklasser

Følgende eksempel viser syntaksen for bruk av flere spesielle variabler som refererer til forekomster av erstatningsprogramklassene.

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

Gruppebehandlingsklasser

Du implementerer klasser ved hjelp av det satsvise behandlingssystemet, og ved å utvide RunBase - og RunBaseBatch-klassene . Hvis du vil fjerne Regelmessighet-knappen fra dialogboksen Gruppebehandling , bruker du metoden Args::p armEnum . Vi anbefaler at du angir en klasse som skal kjøres som en serverbundet satsvis metode. Serverbundne satsvise metoder er sikrere enn satsvise metoder som ikke er serverbundet av følgende årsaker:

  • Metoden kjøres ved hjelp av tillatelsene til brukeren som sendte inn metoden.
  • Metoden kan bare bruke spesifikke info- og globale klassemetoder til å samhandle med klienten som behandler den. Denne begrensningen begrenser samhandling med klienten.

Aktiver en klasse for å kjøre som en serverbundet gruppemetode

  1. Opprett en klasse som utvider RunBaseBatch-klassen .

  2. Overstyr metoden RunBaseBatch.runsImpersonated for å returnere en sann verdi, som vist i eksemplet nedenfor.

    public boolean runsImpersonated()
    {
        return true;
    }
    
  3. Bekreft at klassen bare kaller følgende info- og globale klassemetoder:

    • tilføye
    • Info.copy
    • Info.cut
    • Info.import
    • Info.export
    • Info.line
    • Info.num
    • Global::feil
    • Global::info
    • Global::advarsel

    Info.line- og Info.num-metodene arves fra xInfo-klassen.

Fjerne Regelmessighet-knappen fra dialogboksen for satsvis behandling

Når du implementerer en klasse ved hjelp av det satsvise behandlingssystemet, kan du fjerne Regelmessighet-knappen ved å kalle metoden Args.parmEnum og sende noyes:: Ja-systemopplistingsverdien. NoYes-systemopplistingen bestemmer om Regelmessighet-knappen fjernes fra dialogboksen. Standardverdien er NoYes::Nei.

I eksemplet nedenfor implementeres InventTransferMultiShip-klassen . BatchDialog::hovedmetoden oppretter dialogboksen For satsvis behandling.

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);
}

Bildemanipuleringsklasser

Med to systemklasser kan du manipulere grafikk og ikoner: Bilde- og bildeliste.

  • Bilde – Denne klassen lar deg laste inn, lagre og manipulere enkeltbilder. Du kan for eksempel ta en skjerm og lagre den som et bilde, beskjære eller rotere et bilde eller manipulere fargedybden.
  • Bildeliste – Med denne klassen kan du arbeide med et sett med bilder som har vanlige egenskaper, for eksempel størrelse og gjennomsiktighetsfarge. Du kan vise bildelistene som brukes i ImageListAppl-programklassene .

Spørringsobjektmodell

Spørringsobjektmodellen inneholder klasser som brukes til å definere og kjøre en spørring. Spørringsobjektene brukes til å definere datakilden for spørringen, feltene som returneres, postområder og relasjoner til underordnede datakilder. Spørringsklassene er mer synlige når du oppretter en dynamisk spørring i kode, men de brukes også bak kulissene når du oppretter en statisk spørring i Programutforsker.

Tabellen nedenfor beskriver klassene i spørringsobjektmodellen.

Systemklasse beskrivelse
QueryRun Denne klassen kjører spørringen og henter dataene.
Spørsmål Denne klassen inneholder noen egenskaper, og har én eller flere relaterte datakilder. Det er det øverste nivået i spørringsdefinisjonen.
QueryBuildDataSource Denne klassen definerer tilgang til én enkelt datakilde i spørringen. Hvis det er mer enn én datakilde på samme nivå i en spørring, produseres separate SQL-setninger og kjøres sekvensielt. Hvis én datakilde er underordnet en annen datakilde, opprettes en sammenføyning mellom de to datakildene.
QueryBuildFieldList Denne klassen definerer feltene som returneres fra databasen. Feltlisten er dynamisk som standard, og alle felt returneres fra datakildetabellen, kartet eller visningen. Hver datakilde har bare ett QueryBuildFieldList-objekt . Dette objektet inneholder informasjon om alle merkede felt. Du kan angi mengdefunksjoner, for eksempel SUMMER, ANTALL og GJSN, på feltlisteobjektet.
QueryBuildRange Denne klassen definerer et delsett med poster som returneres, basert på ett enkelt felt. Et område oversettes til en WHERE-setningsdel i SQL-setningen for spørringen. Hvis mer enn ett felt brukes til å begrense spørringen (WHERE-setningsdelen), vil datakilden inneholde mer enn ett område.
QueryBuildDynalink Denne klassen inneholder informasjon om en relasjon (begrensning) til en ekstern post. Når spørringen kjøres, konverteres denne informasjonen til flere oppføringer i WHERE-setningsdelen i SQL-setningen for spørringen. Denne klassen kan bare finnes på den overordnede datakilden for en spørring. Skjemaer bruker funksjonen når to datakilder synkroniseres. Den underordnede datakilden vil da inneholde én eller flere DLLer til den overordnede datakilden. Funksjonen brukes selv om de to datakildene plasseres i to forskjellige skjemaer, men fortsatt synkroniseres.
QueryBuildLink Denne klassen angir relasjonen mellom de to datakildene i sammenføyningen. Denne klassen kan bare finnes på en underordnet datakilde.

Du kan også bruke SysDa-API-en til å spørre etter data.

Oversikt over systemklasser

Kilden for systemklasser er ikke tilgjengelig. En systemklasse kan ha følgende egenskaper:

  • Statiske metoder (eller klassemetoder)
  • Dynamiske metoder
  • Egenskaper – Disse egenskapene er medlemsfunksjoner som brukes til å angi egenskaper. Et eksempel er LeftMargin.

Du kan ikke overstyre systemklassemetoder. Det er ikke meningen at du skal bruke systemklassene til å utforme programobjektene fra grunnen av. Bruk dem i stedet til å utvide eller endre standardfunksjonaliteten i Programutforsker. Du kan for eksempel dynamisk legge til ekstra informasjon i en eksisterende rapport. Du kan også endre alternativene som er tilgjengelige på en side, basert på brukerens valg på en tidligere side.

Samlingsklasser

Med samlingsklassene kan du opprette lister, sett, strukturer, kart og matriser.

Programobjektklasser

Disse systemklassene har funksjoner som aktiveres når du bruker Programutforsker til å opprette programmet. Systemet bruker for eksempel FormDesign-klassen når du definerer oppsettet for skjemaet i utformingsnoden i Programutforsker. Disse klassene lar deg også opprette og endre programobjekter.

Integreringsklasser

Integreringen med miljøet implementeres vanligvis av klasser. Her er noen eksempler på klassene i denne kategorien:

  • COM – kallet av metoder på COM-objekter.
  • DLL – kallet av dll-funksjoner for Microsoft Windows.
  • IO – Lese og skrive eksterne filer.
  • ODBCConnection – et ODBC-grensesnitt (Open Database Connectivity) til en ekstern database.