Partager via


Fonctions d’exécution de session X++

Note

Les groupes d’intérêt communautaire sont maintenant passés de Yammer à Microsoft Viva Engage. Pour participer à une communauté Viva Engage et participer aux dernières discussions, renseignez le formulaire Demander l’accès à la communauté Finance et Operations Viva Engage , puis choisissez la communauté que vous souhaitez rejoindre.

Cet article décrit les fonctions d’exécution de session.

curExt

Récupère l’extension utilisée pour l’entreprise actuelle.

str curExt()

Valeur retournée

Extension de l’entreprise actuelle.

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

Récupère l’ID non numérique qui représente l’utilisateur actuel.

str curUserId()

Valeur retournée

ID non numérique qui représente l’utilisateur actuel.

Example

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

funcName

Récupère une chaîne qui contient le contexte de fonction actuel.

str funcName()

Valeur retournée

Nom de la méthode qui exécute cette méthode.

Remarques

Si l’exécution se trouve actuellement dans le membre d’une table ou d’une classe, le nom de la méthode est précédé du nom de cette table ou de cette classe.

Example

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

getCurrentPartition

Récupère le nom court de la partition actuelle.

str getCurrentPartition()

Valeur retournée

Nom court de la partition actuelle.

Remarques

La longueur maximale du nom de la partition de données retournée est de huit caractères.

Example

L’exemple de code suivant montre les appels vers et sorties à partir de la fonction getCurrentPartition du langage X++ et les fonctions ou méthodes associées.

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

Récupère le champ RecId de la partition actuelle.

int64 getCurrentPartitionRecId()

Valeur retournée

Champ RecId de la partition de données actuelle.

Remarques

Pour voir un exemple de code qui s’appuie sur la fonction getCurrentPartitionRecId , consultez How to : Include a Filter for Partition in Direct Transact-SQL.

Example

L’exemple de code suivant montre les appels vers et sortie à partir de, la fonction getCurrentPartitionRecId du langage X++ et les fonctions ou méthodes associées.

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

Récupère le préfixe d’exécution actuel après les appels successifs à la fonction setPrefix .

str getPrefix()

Valeur retournée

Préfixe d’exécution actuel.

Remarques

Le mécanisme de préfixe facilite l’écriture de messages d’erreur précis sur les transactions effectuées par une application. Étant donné qu’un affichage hiérarchique est créé dans le journal des informations, il peut être plus facile de déterminer l’emplacement de chaque erreur.

Example

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

sessionId

Récupère le numéro de session de la session active.

int sessionId()

Valeur retournée

ID numérique de la session active.

Remarques

Un numéro de session est attribué lorsque le client est démarré et se connecte au serveur d’objets d’application (AOS). Chaque appel de cette fonction pendant la durée de vie du client retourne la même valeur entière. La valeur retournée est compatible avec le type de données étendu SessionID . Les méthodes contiennent des informations sur les sessions utilisateur individuelles.

Example

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

prmIsDefault

Détermine si le paramètre spécifié pour la méthode actuelle a la valeur par défaut.

int prmIsDefault(anytype argument)

Paramètres

Paramètre Descriptif
Argument Paramètre à tester.

Valeur retournée

1 si la valeur par défaut du paramètre a été utilisée ; sinon, 0 (zéro).

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

Permet à l’appelant d’exécuter une méthode X++ dans le contexte de sécurité d’un autre utilisateur. Cette fonction est souvent utilisée avec le traitement par lots.

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

Paramètres

Paramètre Descriptif
userId Utilisateur à emprunter l’identité.
classId Classe à appeler dans la session emprunt d’identité.
staticMethodName Méthode de classe à appeler dans le nouveau contexte utilisateur.
params Paramètres à passer à la méthode ; optionnel.
entreprise Société sélectionnée pour la session emprunt d’identité ; optionnel.
language Langue sélectionnée pour la session emprunt d’identité ; optionnel.
partition Clé de partition du type retourné par la fonction getCurrentPartition ; optionnel.

Valeur retournée

Conteneur qui contient la valeur de retour ou les valeurs de la méthode appelée par la fonction runAs , si des valeurs ont été retournées.

Remarques

Cette fonction permet d’exécuter du code en tant qu’autre utilisateur. Cette fonctionnalité présente une menace de sécurité. Par conséquent, cette fonction s’exécute sous Sécurité d’accès au code. Les appels à cette fonction sur le serveur nécessitent l’autorisation de la classe RunAsPermission . Chaque utilisation de cette interface de programmation d’application (API) doit être modélisée par les menaces. Si une vulnérabilité de sécurité est détectée, validez l’entrée dans cette API. Le débogueur peut ignorer les points d’arrêt situés dans une méthode appelée à l’aide de la fonction runAs . Le code X++ exécuté par la fonction runAs doit s’exécuter en tant que langage CIL (Common Intermediate Language) microsoft .NET Framework. Si CIL n’a pas été généré pour la méthode statique cible, un message d’erreur indique que la méthode est introuvable. Le type de système PartitionKey est le type exact du paramètre de partition . PartitionKey est une chaîne qui a une longueur maximale de huit caractères.

Example

L’exemple suivant appelle la méthode runDueDateEventsForUser dans la classe EventJobDueDate . Le code s’exécute dans le contexte de sécurité d’un utilisateur. Exécutez ce code en l’appliquant à une méthode dans une nouvelle classe.

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

Définit le préfixe de l’étendue d’exécution actuelle.

int setPrefix(str _prefix)

Paramètres

Paramètre Descriptif
_préfixe Préfixe de l’étendue d’exécution actuelle.

Valeur retournée

0 si le préfixe a été défini avec succès.

Remarques

Le préfixe complet de l’exécution peut être récupéré à l’aide de la fonction getPrefix . Lorsque l’étendue est laissée, le préfixe est automatiquement réinitialisé au niveau précédent. Le mécanisme de préfixe facilite l’écriture de messages d’erreur précis sur les transactions effectuées par une application. Par exemple, la méthode AA appelle la méthode BB , et chaque méthode appelle la fonction setPrefix . Les messages que la méthode BB écrit dans le journal d’informations apparaissent imbriqués dans une hiérarchie. Lorsque la méthode BB se termine et que le contrôle retourne à la méthode AA , le préfixe défini par la méthode BB n’est pas attaché aux messages suivants.

Example

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