Kjøretidsfunksjoner for X++-økt

Denne artikkelen beskriver funksjonene for øktkjøring.

curExt

Henter utvidelsen som gjeldende firma bruker.

str curExt()

Return value

Utvidelsen for gjeldende firma.

Example

static void curExtExample(Args _arg)
{
    str s;
    // Sets s to the extension of the current company.
    s = curExt();
    print "Current extension is " + s;
}

curUserId

Henter den ikke-numeriske ID-en som representerer gjeldende bruker.

str curUserId()

Return value

Den ikke-numeriske IDen som representerer gjeldende bruker.

Example

static void curUserIdExample(Args _arg)
{
    str s;
    s = curUserId();
    print "Current user ID is " + s;
}

funcName

Henter en streng som inneholder gjeldende funksjonskontekst.

str funcName()

Return value

Navnet på metoden som kjører denne metoden.

Remarks

Hvis kjøring for øyeblikket er innenfor medlemmet av en tabell eller klasse, er navnet på metoden prefikset med navnet på tabellen eller klassen.

Example

static void funcNameExample(Args _arg)
{
    print "Current function context is " + funcName();
}

getCurrentPartition

Henter det korte navnet på gjeldende partisjon.

str getCurrentPartition()

Return value

Det korte navnet på gjeldende partisjon.

Remarks

Den maksimale lengden på datapartisjonsnavnet som returneres, er åtte tegn.

Example

Følgende kodeeksempel viser kall til, og utdata fra, getCurrentPartition-funksjonen for X++-språket og relaterte funksjoner eller metoder.

static public void Main(Args _args)  // X++ method.
{
    int64 iPartition;
    str sPartition;
    SelectableDataArea oSelectableDataArea;  // System ExDT.
    iPartition = getCurrentPartitionRecId();
    sPartition = getcurrentpartition();
    oSelectableDataArea = Global::getCompany( tableNum(BankAccountTable) );
    Global::info( strFmt(
            "getCurrentPartitionRecId =%1 , getCurrentPartition =%2 , getCompany =%3",
            iPartition, sPartition, oSelectableDataArea) );
}
/**** Pasted from Infolog window:
Message_@SYS14327 (03:42:38 pm)
getCurrentPartitionRecId =5637144576 , getCurrentPartition =initial , getCompany =ceu
****/

getCurrentPartitionRecId

Henter RecId-feltet for gjeldende partisjon.

int64 getCurrentPartitionRecId()

Return value

RecId-feltet for gjeldende datapartisjon.

Remarks

Hvis du vil se et kodeeksempel som er avhengig av getCurrentPartitionRecId-funksjonen , kan du se Slik inkluderer du et filter for partisjon i Direct Transact-SQL.

Example

Følgende kodeeksempel viser kall til og utdata fra getCurrentPartitionRecId-funksjonen for X++-språket og relaterte funksjoner eller metoder.

static public void Main(Args _args)  // X++ method.
{
    int64 iPartition;
    str sPartition;
    SelectableDataArea oSelectableDataArea;  // System ExDT.
    iPartition = getCurrentPartitionRecId();
    sPartition = getcurrentpartition();
    oSelectableDataArea = Global::getCompany( tableNum(BankAccountTable) );
    Global::info( strFmt(
            "getCurrentPartitionRecId =%1 , getCurrentPartition =%2 , getCompany =%3",
            iPartition, sPartition, oSelectableDataArea) );
}
/**** Pasted from Infolog window:
Message_@SYS14327 (03:42:38 pm)
getCurrentPartitionRecId =5637144576 , getCurrentPartition =initial , getCompany =ceu
****/

getPrefix

Henter gjeldende kjøringsprefiks etter etterfølgende kall til setPrefix-funksjonen .

str getPrefix()

Return value

Gjeldende prefiks for kjøring.

Remarks

Prefiksmekanismen gjør det enklere å skrive presise feilmeldinger om transaksjonene som et program utfører. Siden det opprettes en hierarkisk visning i infologgen, kan det være enklere å fastslå hvor hver feil kom fra.

Example

static void getPrefixExample(Args _arg)
{
    setPrefix("Prefix");
    setPrefix("Another prefix");
    print getPrefix();
}

sessionId

Henter øktnummeret for gjeldende økt.

int sessionId()

Return value

Den numeriske ID-en for gjeldende økt.

Remarks

Tilordne et øktnummer når du starter klienten og kobler til Application Object Server (AOS). Hvert kall til denne funksjonen i løpet av klientens levetid returnerer samme heltallsverdi. Den returnerte verdien er kompatibel med den utvidede sessionID-datatypen . Inneholder metoder som returnerer informasjon om individuelle brukerøkter.

Example

static void sessionIdExample(Args _arg)
{
    int session;
    session = sessionId();
    print "This session ID is number " + int2Str(session);
}

prmIsDefault

Bestemmer om den angitte parameteren for gjeldende metode har standardverdien.

int prmIsDefault(anytype argument)

Parameters

Parameter Description
Argument Parameteren som skal testes.

Return value

1 hvis standardverdien for parameteren ble brukt. ellers 0 (null).

Example

static void prmIsDefaultExample(Args _arg)
{
    void fn(boolean b = true, int j = 42)
    {
        if (prmIsDefault(b) == 1)
        {
            print "First parameter is using the default value.";
        }
        else
        {
            print "First parameter is not using the default value.";
        }
    }
    fn();
    fn(false);
}

runAs

Gjør det mulig for innringeren å kjøre en X++-metode i sikkerhetskonteksten til en annen bruker. Denne funksjonen brukes oftest med satsvis behandling.

container runAs(
    str userId,
    int classId,
    str staticMethodName
    [,
    container params,
    str company,
    str language,
    str partition
    ])

Parameters

Parameter Description
userId Brukeren som skal representeres.
classId Klassen som skal aktiveres i den representerte økten.
staticMethodName Klassemetoden som skal aktiveres i den nye brukerkonteksten.
params Parameterne som skal sendes til metoden. valgfri.
company Firmaet som er valgt for den representerte økten. valgfri.
språk Språket som er valgt for den representerte økten. valgfri.
partition Partisjonsnøkkelen for typen som returneres av getCurrentPartition-funksjonen . valgfri.

Return value

En beholder som inneholder returverdien eller verdiene for metoden som runAs-funksjonen kaller opp, hvis noen verdier returneres.

Remarks

Denne funksjonen gjør det mulig å kjøre kode som en annen bruker. Denne funksjonen utgjør en sikkerhetstrussel. Denne funksjonen kjører derfor under Code Access Security. Kall til denne funksjonen på serveren krever tillatelse fra RunAsPermission-klassen . Hver bruk av dette programprogrammeringsgrensesnittet (API) bør være trusselmodellert. Hvis det oppdages et sikkerhetsproblem, validerer du inndata til denne API-en. Feilsøkingsprogrammet kan ignorere breakpoints som er plassert i en metode som runAs-funksjonen kaller opp. X++-kode som runAs-funksjonen kjører, må kjøres som Microsoft .NET Framework Common Intermediate Language (CIL). Hvis CIL ikke genereres for den statiske målmetoden, angir en feilmelding at metoden ikke blir funnet. Systemtypen PartitionKey er den nøyaktige typen partisjonsparameter. PartitionKey er en streng som har en maksimumslengde på åtte tegn.

Example

Følgende eksempel kaller runDueDateEventsForUser-metoden i EventJobDueDate-klassen . Koden kjøres i sikkerhetskonteksten til en bruker. Kjør denne koden ved å bruke den på en metode i en ny klasse.

server static public void Main(Args _args)
{
    RunAsPermission perm;
    UserId runAsUser;
    SysUserInfo userInfo;
    userInfo = SysUserInfo::find();
    runAsUser = userInfo.Id;
    perm = new RunAsPermission(runAsUser);
    perm.assert();
    runAs(runAsUser, classnum(EventJobDueDate), "runDueDateEventsForUser");
    CodeAccessPermission::revertAssert();
}

setPrefix

Angir prefikset for gjeldende kjøringsområde.

int setPrefix(str _prefix)

Parameters

Parameter Description
_prefix Prefikset for gjeldende kjøringsområde.

Return value

0 hvis prefikset er angitt.

Remarks

Bruk getPrefix-funksjonen til å få det fullstendige prefikset for kjøringen. Når omfanget avsluttes, tilbakestilles prefikset automatisk til forrige nivå. Prefiksmekanismen gjør det enklere å skrive nøyaktige feilmeldinger om transaksjonene som et program utfører. AA-metoden kaller for eksempel BB-metoden, og hver metode kaller setPrefix-funksjonen. Meldinger som BB-metoden skriver til infologgen, vises nestet i et hierarki. Når BB-metoden avsluttes, og kontrollen går tilbake til AA-metoden , er ikke prefikset som BB-metodesettet er knyttet til etterfølgende meldinger.

Example

static void setPrefixExample(Args _arg)
{
    int i;
    i = setPrefix("Prefix");
    print i;
}