Delen via


X++-runtimefuncties sessie

Opmerking

Community-belangengroepen zijn nu verplaatst van Yammer naar Microsoft Viva Engage. Als u wilt deelnemen aan een Viva Engage-community en deel wilt nemen aan de meest recente discussies, vult u het formulier Toegang aanvragen tot Finance and Operations Viva Engage Community in en kiest u de community waaraan u wilt deelnemen.

In dit artikel worden de runtimefuncties van de sessie beschreven.

curExt

Haalt de extensie op die wordt gebruikt voor het huidige bedrijf.

str curExt()

Retourwaarde

De uitbreiding voor het huidige bedrijf.

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

Haalt de niet-numerieke id op die de huidige gebruiker vertegenwoordigt.

str curUserId()

Retourwaarde

De niet-numerieke id die de huidige gebruiker vertegenwoordigt.

Example

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

funcName

Hiermee wordt een tekenreeks opgehaald die de huidige functiecontext bevat.

str funcName()

Retourwaarde

De naam van de methode die deze methode uitvoert.

Opmerkingen

Als de uitvoering zich momenteel binnen het lid van een tabel of klasse bevindt, wordt de naam van de methode voorafgegaan door de naam van die tabel of klasse.

Example

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

getCurrentPartition

Haalt de korte naam van de huidige partitie op.

str getCurrentPartition()

Retourwaarde

De korte naam van de huidige partitie.

Opmerkingen

De maximale lengte van de gegevenspartitienaam die wordt geretourneerd, is acht tekens.

Example

In het volgende codevoorbeeld ziet u aanroepen naar en uitvoer van de functie getCurrentPartition van de X++-taal en gerelateerde functies of methoden.

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

Haalt het veld RecId van de huidige partitie op.

int64 getCurrentPartitionRecId()

Retourwaarde

Het veld RecId van de huidige gegevenspartitie.

Opmerkingen

Als u een codevoorbeeld wilt zien dat afhankelijk is van de functie getCurrentPartitionRecId , raadpleegt u How to: Include a Filter for Partition in Direct Transact-SQL.

Example

In het volgende codevoorbeeld ziet u aanroepen naar en uitvoer van de functie getCurrentPartitionRecId van de X++-taal en gerelateerde functies of methoden.

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

Haalt het huidige uitvoeringsvoorvoegsel op na opeenvolgende aanroepen naar de functie setPrefix .

str getPrefix()

Retourwaarde

Het huidige uitvoeringsvoorvoegsel.

Opmerkingen

Met het voorvoegselmechanisme kunt u eenvoudiger nauwkeurige foutberichten schrijven over de transacties die een toepassing uitvoert. Omdat er een hiërarchische weergave wordt gemaakt in het infologboek, kan het eenvoudiger zijn om te bepalen waar elke fout vandaan komt.

Example

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

sessie-id

Hiermee wordt het sessienummer van de huidige sessie opgehaald.

int sessionId()

Retourwaarde

De numerieke id van de huidige sessie.

Opmerkingen

Er wordt een sessienummer toegewezen wanneer de client wordt gestart en verbinding maakt met Application Object Server (AOS). Elke aanroep van deze functie tijdens de levensduur van de client retourneert dezelfde gehele waarde. De geretourneerde waarde is compatibel met het uitgebreide gegevenstype SessionID . De bevat methoden die informatie retourneren over afzonderlijke gebruikerssessies.

Example

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

prmIsDefault

Bepaalt of de opgegeven parameter voor de huidige methode de standaardwaarde heeft.

int prmIsDefault(anytype argument)

Parameterwaarden

Kenmerk Description
Argument De parameter die moet worden getest.

Retourwaarde

1 als de standaardwaarde voor de parameter is gebruikt; anders , 0 (nul).

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

Hiermee kan de aanroeper een X++-methode uitvoeren in de beveiligingscontext van een andere gebruiker. Deze functie wordt meestal gebruikt met batchverwerking.

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

Parameterwaarden

Kenmerk Description
userId De gebruiker die zich voordoet.
classId De klasse die moet worden aangeroepen in de geïmiteerde sessie.
staticMethodName De klassemethode die moet worden aangeroepen in de nieuwe gebruikerscontext.
params De parameters die moeten worden doorgegeven aan de methode; facultatief.
bedrijf Het bedrijf dat is geselecteerd voor de geïmiteerde sessie; facultatief.
language De taal die is geselecteerd voor de geïmiteerde sessie; facultatief.
partitie De partitiesleutel van het type dat wordt geretourneerd door de functie getCurrentPartition ; facultatief.

Retourwaarde

Een container met de retourwaarde of waarden van de methode die wordt aangeroepen door de runAs-functie , als er waarden zijn geretourneerd.

Opmerkingen

Met deze functie kunt u code uitvoeren als een andere gebruiker. Deze mogelijkheid vormt een beveiligingsrisico. Daarom wordt deze functie uitgevoerd onder Code Access Security. Aanroepen naar deze functie op de server vereisen toestemming van de klasse RunAsPermission . Elk gebruik van deze API (Application Programming Interface) moet worden gemodelleerd. Als er een beveiligingsprobleem wordt gedetecteerd, valideert u de invoer voor deze API. Het foutopsporingsprogramma negeert mogelijk onderbrekingspunten die zich in een methode bevinden die wordt aangeroepen met behulp van de runAs-functie . X++ code die wordt uitgevoerd door de runAs-functie moet worden uitgevoerd als Microsoft .NET Framework Common Intermediate Language (CIL). Als CIL niet is gegenereerd voor de statische doelmethode, geeft een foutbericht aan dat de methode niet wordt gevonden. Het systeemtype PartitionKey is het exacte type van de partitieparameter . PartitionKey is een tekenreeks met een maximale lengte van acht tekens.

Example

In het volgende voorbeeld wordt de methode runDueDateEventsForUser aangeroepen in de klasse EventJobDueDate . De code wordt uitgevoerd in de beveiligingscontext van een gebruiker. Voer deze code uit door deze toe te passen op een methode in een nieuwe 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

Hiermee stelt u het voorvoegsel voor het huidige uitvoeringsbereik in.

int setPrefix(str _prefix)

Parameterwaarden

Kenmerk Description
_voorvoegsel Het voorvoegsel voor het huidige uitvoeringsbereik.

Retourwaarde

0 als het voorvoegsel is ingesteld.

Opmerkingen

Het volledige voorvoegsel voor de uitvoering kan worden opgehaald met behulp van de functie getPrefix . Wanneer het bereik overblijft, wordt het voorvoegsel automatisch opnieuw ingesteld op het vorige niveau. Met het voorvoegselmechanisme kunt u eenvoudiger nauwkeurige foutberichten schrijven over de transacties die een toepassing uitvoert. De AA-methode roept bijvoorbeeld de BB-methode aan en elke methode roept de functie setPrefix aan. Berichten die door de BB-methode naar het Infolog worden geschreven, worden genest weergegeven in een hiërarchie. Wanneer de BB-methode eindigt en het besturingselement terugkeert naar de AA-methode , wordt het voorvoegsel dat door de BB-methode is ingesteld, niet gekoppeld aan volgende berichten.

Example

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