Suorituksenaikaiset X++-istuntofunktiot

Tässä artikkelissa kuvataan istunnon suorituksenaikaiset funktiot.

curExt

Hakee nykyisen yrityksen käyttämän laajennuksen.

str curExt()

Return value

Nykyisen yrityksen laajennus.

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

Hakee nykyistä käyttäjää edustavan muun kuin numeerisen tunnuksen.

str curUserId()

Return value

Nykyistä käyttäjää edustava muu kuin numeerinen tunnus.

Example

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

funcName

Hakee merkkijonon, joka sisältää nykyisen funktiokontekstin.

str funcName()

Return value

Sen menetelmän nimi, joka suorittaa tämän menetelmän.

Remarks

Jos suoritus on tällä hetkellä taulukon tai luokan jäsenessä, -menetelmän nimessä on etuliitteenä kyseisen taulukon tai luokan nimi.

Example

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

getCurrentPartition

Hakee nykyisen osion lyhyen nimen.

str getCurrentPartition()

Return value

Nykyisen osion lyhyt nimi.

Remarks

Palautetun tietoosion nimen enimmäispituus on kahdeksan merkkiä.

Example

Seuraavassa koodiesimerkissä näytetään kutsut ja tuloste X++-kielen getCurrentPartition-funktiosta ja siihen liittyvistä funktioista tai menetelmistä.

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

Hakee nykyisen osion RecId-kentän .

int64 getCurrentPartitionRecId()

Return value

Nykyisen tieto-osion RecId-kenttä .

Remarks

Jos haluat nähdä koodiesimerkin, joka on riippuvainen getCurrentPartitionRecId-funktiosta , katso Ohjeet: Sisällytä osion suodatin Direct Transact-SQL:ään.

Example

Seuraava koodiesimerkki näyttää X++-kielen getCurrentPartitionRecId-funktion kutsut ja tulokset sekä liittyvät funktiot tai menetelmät.

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

Noutaa nykyisen suorituksen etuliitteen setPrefix-funktion peräkkäisten kutsujen jälkeen.

str getPrefix()

Return value

Nykyinen suorituksen etuliite.

Remarks

Etuliitemekanismi helpottaa tarkkojen virhesanomien kirjoittamista sovelluksen suorittamista tapahtumista. Koska Infolog-lokiin luodaan hierarkkinen näyttö, voi olla helpompi selvittää, mistä kukin virhe on peräisin.

Example

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

sessionId

Hakee nykyisen istunnon istunnon numeron.

int sessionId()

Return value

Nykyisen istunnon numeerinen tunnus.

Remarks

Määritä istunnon numero, kun käynnistät asiakkaan ja muodostat yhteyden Application Object Serveriin (AOS). Jokainen tämän funktion kutsu asiakkaan elinkaaren aikana palauttaa saman kokonaislukuarvon. Palautettu arvo on yhteensopiva sessionID :n laajennetun tietotyypin kanssa. Sisältää-menetelmät palauttavat tietoja yksittäisistä käyttäjäistuntoista.

Example

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

prmIsDefault

Määrittää, onko nykyisen menetelmän määritetyllä parametrilla oletusarvo.

int prmIsDefault(anytype argument)

Parameters

Parameter Description
Argument Testattava parametri.

Return value

1 , jos parametrin oletusarvoa on käytetty, muussa tapauksessa 0 (nolla).

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

Tämän avulla soittaja voi suorittaa X++-menetelmän toisen käyttäjän suojauskontekstissa. Tätä funktiota käytetään useimmiten erän käsittelyssä.

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

Parameters

Parameter Description
userId Käyttäjä, joksi tekeydytät.
classId Luokka, joka käynnistetään tekeydytyssä istunnossa.
staticMethodName Luokkamenetelmä, joka käynnistää uudessa käyttäjäkontekstissa.
params -menetelmään välitettavat parametrit. valinnainen.
company Yritys, joka on valittu toiseksi istunnoksi tekeytymiseen; valinnainen.
language Kielelle, joka on valittuna tekeydytylle istunnolle. valinnainen.
partition GetCurrentPartition-funktion palauttaman tyypin osioavain. valinnainen.

Return value

Säilö, joka sisältää runAs-funktion kutsuman menetelmän paluuarvon tai arvot, jos mitään arvoja palautetaan.

Remarks

Tämän funktion avulla koodia voidaan suorittaa toisena käyttäjänä. Tämä ominaisuus on suojausuhka. Siksi tämä funktio suoritetaan kohdassa Code Access Security. Tämän funktion kutsut palvelimessa edellyttävät lupaa RunAsPermission-luokasta . Jokaisen tämän sovellusohjelmointirajapinnan käytön on oltava uhkien mallinnusta. Jos suojausheikkoutta havaitaan, tarkista syöte tähän ohjelmointirajapintaan. Virheenkorjaus voi ohittaa keskeytyspisteet, jotka ovat menetelmässä, jota runAs-funktio kutsuu. RunAs-funktion suorittaman X++-koodin on toimittava muodossa Microsoft .NET Framework Common Intermediate Language (CIL). Jos CIL:tä ei luoda staattiselle kohdemenetelmälle, virheilmoitus ilmaisee, että menetelmää ei löydy. Osioavain-järjestelmätyyppi on osioparametrin tarkka tyyppi. PartitionKey on merkkijono, jonka enimmäispituus on kahdeksan merkkiä.

Example

Seuraavassa esimerkissä kutsutaan runDueDateEventsForUser-menetelmääEventJobDueDate-luokassa . Koodi suoritetaan käyttäjän suojauskontekstissa. Suorita tämä koodi käyttämällä sitä uuden luokan menetelmässä.

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

Määrittää nykyisen suoritusalueen etuliitteen.

int setPrefix(str _prefix)

Parameters

Parameter Description
_prefix Nykyisen suoritusalueen etuliite.

Return value

0 , jos etuliite on määritetty onnistuneesti.

Remarks

GetPrefix-funktiolla saat suorituksen täydellisen etuliitteen. Kun vaikutusalue päättyy, etuliite palautuu automaattisesti edelliselle tasolle. Etuliitemekanismi helpottaa tarkkojen virhesanomien kirjoittamista tapahtumista, joita sovellus suorittaa. Esimerkiksi AA-menetelmä kutsuu BB-menetelmää ja kukin menetelmä kutsuu setPrefix-funktiota . Sanomat, jotka BB-menetelmä kirjoittaa Infologiin, näkyvät sisäkkäin hierarkiassa. Kun BB-menetelmä päättyy ja ohjausobjekti palaa AA-menetelmään , BB-menetelmän asettamaa etuliitettä ei liitetä seuraaviin viesteihin.

Example

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