Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
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 – Implementere disse klassene i X++. Du finner dem under noden Kodeklasser > i Programutforsker.
- Systemklasser – disse klassene kalles noen ganger kjerneklasser. De vises under noden Systemdokumentasjonsklasser > i Programutforsker. Du får ikke tilgang til kildekoden for disse klassene. 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. Du kan bare kalle konstruktøren 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 inkluderer følgende typer:
- Forekomstmetoder
- Statiske metoder
- Hovedmetoder
Du kan opprette metoder for mange typer elementer. Her er noen eksempler:
- Klasser
- Maps
- Views
- Datasett
- Skjemaer
- Spørringer
Erstatte programklasser for systemklasser
Bruk 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 . Ikke bruk 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 imidlertid vil referere til forekomstmedlemmene i programklassen , bruker du 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
Implementere klasser ved hjelp av det satsvise behandlingssystemet og ved å utvide Klassene RunBase og RunBaseBatch . Bruk metoden Args::p armEnum for å fjerne Regelmessighet-knappen fra dialogboksen For bunkebehandling. Angi en klasse som skal kjøres som en serverbundet gruppemetode. 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
Opprett en klasse som utvider RunBaseBatch-klassen .
Overstyr runBaseBatch.runsImpersonated-metoden for å returnere sann, som vist i eksemplet nedenfor.
public boolean runsImpersonated() { return true; }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.
Fjern Regelmessighet-knappen fra dialogboksen for satsvis behandling
Når du implementerer en klasse ved hjelp av det satsvise behandlingssystemet, fjerner du 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 et skjermbilde og lagre det som et bilde, beskjære eller rotere et bilde eller endre 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 ImageListAppl-programklassene bruker.
Spørringsobjektmodell
Spørringsobjektmodellen inneholder klasser som du bruker til å definere og kjøre en spørring. Bruk spørringsobjektene 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, produserer spørringen separate SQL-setninger og kjører dem sekvensielt. Hvis én datakilde er underordnet en annen datakilde, oppretter spørringen 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), inneholder datakilden 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 inneholder deretter é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 angir egenskaper. Et eksempel er LeftMargin.
Du kan ikke overstyre systemklassemetoder. Det er ikke ment at du bruker 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
Klasser implementerer vanligvis integreringen med miljøet. 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.