X++ seanso vykdymo laiko funkcijos

Pastaba.

Bendruomenės interesų grupės dabar perkeltos iš "Yammer" į "Microsoft Viva Engage". Norėdami prisijungti prie Viva Engage bendruomenės ir dalyvauti naujausiose diskusijose, užpildykite formą Prašyti prieigos prie "Finance and Operations Viva Engage Community ir pasirinkite bendruomenę, prie kurios norite prisijungti.

Šiame straipsnyje aprašomos seanso vykdyklės funkcijos.

kurExt

Nuskaito plėtinį, kurį naudoja dabartinė įmonė.

str curExt()

Pateikiama reikšmė

Dabartinės įmonės plėtinys.

Pavyzdžiui

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

curUserId

Nuskaito neskaitinį ID, nurodantį dabartinį vartotoją.

str curUserId()

Pateikiama reikšmė

Neskaitinis ID, nurodantis dabartinį vartotoją.

Pavyzdžiui

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

funcName

Nuskaito eilutę, kurioje yra dabartinės funkcijos kontekstas.

str funcName()

Pateikiama reikšmė

Metodo, kuris vykdo šį metodą, pavadinimas.

Pastabos

Jei vykdymas šiuo metu yra lentelės ar klasės narys, metodo pavadinimas yra priešdėlis su lentelės arba klasės pavadinimu.

Pavyzdžiui

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

getCurrentPartition

Nuskaito trumpą dabartinio skaidinio pavadinimą.

str getCurrentPartition()

Pateikiama reikšmė

Trumpasis dabartinio skaidinio pavadinimas.

Pastabos

Maksimalus grąžinamo duomenų skaidinio pavadinimo ilgis yra aštuoni simboliai.

Pavyzdžiui

Toliau pateiktame kodo pavyzdyje rodomi X++ kalbos funkcijos getCurrentPartition iškvietimai ir išvestis iš jos bei susijusios funkcijos arba metodai.

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

Nuskaito dabartinio skaidinio lauką RecId .

int64 getCurrentPartitionRecId()

Pateikiama reikšmė

Dabartinio duomenų skaidinio laukas RecId .

Pastabos

Norėdami pamatyti kodo pavyzdį, kuris priklauso nuo funkcijos getCurrentPartitionRecId , žr. Kaip: Skaidinio filtro įtraukimas į "Direct Transact-SQL".

Pavyzdžiui

Toliau pateiktame kodo pavyzdyje rodomi X++ kalbos funkcijos getCurrentPartitionRecId iškvietimai ir išvestis iš jos bei susijusios funkcijos arba metodai.

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

Nuskaito dabartinį vykdymo prefiksą po paskesnių iškvietimų į funkciją setPrefix .

str getPrefix()

Pateikiama reikšmė

Dabartinis vykdymo prefiksas.

Pastabos

Prefikso mechanizmas leidžia lengviau rašyti tikslius klaidų pranešimus apie operacijas, kurias atlieka programa. Kadangi informacijos žurnale sukuriamas hierarchinis ekranas, gali būti lengviau nustatyti, iš kur kilo kiekviena klaida.

Pavyzdžiui

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

sessionId

Nuskaito dabartinio seanso numerį.

int sessionId()

Pateikiama reikšmė

Dabartinio seanso skaitinis ID.

Pastabos

Priskirkite seanso numerį, kai paleidžiate klientą ir prisijungiate prie programos objektų serverio (AOS). Kiekvienas šios funkcijos iškvietimas kliento naudojimo metu pateikia tą pačią sveikojo skaičiaus reikšmę. Grąžinta reikšmė suderinama su SessionID išplėstinių duomenų tipu. Metoduose pateikiama informacija apie atskirus vartotojų seansus.

Pavyzdžiui

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

prmIsDefault

Nustato, ar nurodytame dabartinio metodo parametre yra numatytoji reikšmė.

int prmIsDefault(anytype argument)

Parametrai

Parametras Aprašas
Argumentas Tikrinamas parametras.

Pateikiama reikšmė

1 jei buvo naudojama numatytoji parametro reikšmė; kitu atveju 0 (nulis).

Pavyzdžiui

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

vykdyti Kaip

Įgalina kvietėjas paleisti X++ metodą kito vartotojo saugos kontekste. Ši funkcija dažniausiai naudojama su paketiniu apdorojimu.

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

Parametrai

Parametras Aprašas
Vartotojo ID Vartotojas apsimestinė.
klasės ID Klasė, iškviečiama apsimesiniame seanse.
staticMethodName Klasės metodas iškviesti naujame vartotojo kontekste.
params Parametrai, kuriuos reikia perduoti metodui; Pasirinktinai.
įmonė Įmonė, pasirinkta apsimestinėm seansui; Pasirinktinai.
kalba Kalba, pasirinkta apsimestinėm seansui; Pasirinktinai.
skaidinys Tipo, kurį grąžina funkcija getCurrentPartition , skaidinio raktas; Pasirinktinai.

Pateikiama reikšmė

Konteineris, kuriame yra grąžinama reikšmė arba metodo, kurį iškviečia funkcija runAs , reikšmės, jei pateikiamos reikšmės.

Pastabos

Ši funkcija leidžia vykdyti kodą kaip kitam vartotojui. Ši funkcija kelia grėsmę saugai. Todėl ši funkcija veikia dalyje Kodo prieigos sauga. Šios funkcijos iškvietimams serveryje reikia leidimo iš RunAsPermission klasės. Kiekvienas šios taikomosios programos programavimo sąsajos (API) naudojimas turėtų būti pagrįstas grėsmėmis. Jei aptinkamas saugos pažeidžiamumas, patikrinkite šios API įvestį. Derintuvė gali nepaisyti stabdos taškų, esančių funkcijoje runAs iškviečiamame metode. X++ kodas, kurį vykdo funkcija runAs , turi veikti kaip "Microsoft .NET Framework" bendroji tarpinė kalba (CIL). Jei CIL nesugeneruotas tiksliniam statiniam metodui, klaidos pranešimas nurodo, kad metodas nerastas. Sistemos tipas PartitionKey yra tikslus skaidinio parametro tipas. PartitionKey yra eilutė, kurios maksimalus ilgis yra aštuoni simboliai.

Pavyzdžiui

Toliau pateiktame pavyzdyje iškviečia metodą runDueDateEventsForUserklasės EventJobDueDate . Kodas vykdomas vartotojo saugos kontekste. Paleiskite šį kodą pritaikydami jį naujos klasės metodui.

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

Nustato dabartinės vykdymo aprėpties prefiksą.

int setPrefix(str _prefix)

Parametrai

Parametras Aprašas
_priešdėlis Dabartinės vykdymo aprėpties prefiksas.

Pateikiama reikšmė

0 , jei prefiksas nustatytas sėkmingai.

Pastabos

Naudokite funkciją getPrefix , kad gautumėte visą vykdymo prefiksą. Kai aprėptis baigiasi, prefiksas automatiškai nustatomas iš naujo į ankstesnį lygį. Prefikso mechanizmas leidžia lengviau rašyti tikslius klaidų pranešimus apie operacijas, kurias atlieka programa. Pvz., metodas AA iškviečia BB metodą, o kiekvienas metodas iškviečia funkciją setPrefix . Pranešimai, kuriuos BB metodas rašo informacijos žurnale, rodomi įdėtieji hierarchijoje. Kai bb metodas baigiasi, o valdiklis grįžta į AA metodą, priešvardis, kurį BB metodo rinkinys nepridėtas prie paskesnių pranešimų.

Pavyzdžiui

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