Partager via


Fonctions d’exécution de réflexion 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 réflexion.

classIdGet

Récupère l’identificateur numérique (l’ID de classe) de la classe à laquelle appartient l’objet initialisé.

int classIdGet(class object)

Paramètres

Paramètre Descriptif
objet Objet pour lequel obtenir l’ID de classe.

Valeur retournée

ID de classe de l’objet spécifié.

Example

static void classIdGetExample(Args _args)
{
    int i;
    WorkTimeCheck w;

    i = classIdGet(w);
    print "Class ID for object is " + int2Str(i);
}

dimOf

Récupère le nombre d’éléments d’index auxquels l’espace a été alloué dans un tableau X++.

int dimOf(anytype object)

Paramètres

Paramètre Descriptif
objet Tableau pour déterminer la taille de dimension de.

Valeur retournée

Si la valeur du paramètre d’objet est un tableau, le nombre d’éléments du tableau ; sinon, 0 (zéro).

Remarques

La fonction dimOf est destinée aux tableaux X++ déclarés comme types primitifs X++ suivants :

  • boolean
  • date
  • int
  • int64
  • real
  • utcDateTime

Un exemple est int iAmounts[6] ;. Les tableaux de valeurs d’énumération et de types de données étendus sont également pris en charge s’ils sont finalement basés sur l’un des types de données primitifs précédents (par exemple , int). La fonction dimOf n’accepte pas les tableaux de tous les types primitifs X++. Voici les types de tableaux que la fonction dimOf n’accepte pas :

  • str
  • conteneur
  • anytype
  • Tableaux d’objets de classe
  • Instances de la classe Array

Example

static void JobDimOfArrays(Args _args)
{
    int iAmounts[20], iCounts[];
    ABCModel enumAbcModel[22]; // Enum
    ABCModelType exdtAbcModelType[24]; // Extended data type
    anytype anyThings[26];
    str sNames[28];
    Array myArrayObj; // Class

    info("Start of job.");
    info("--(Next, normal int array, dimOf() accepts it.)");
    info(int2Str(dimOf(iAmounts)));
    info("--(Next, normal enum array, dimOf() accepts it.)");
    info(int2Str(dimOf(enumAbcModel)));
    info("--(Next, normal extended data type array (based on enum), dimOf() accepts it.)");
    info(int2Str(dimOf(exdtAbcModelType)));
    info("--(Next, dynamic int array, dimension not yet set.)");
    info(int2Str(dimOf(iCounts)));
    info("--(Next, dynamic int array, after dimension established.)");

    iCounts[13] = 13;
    info(int2Str(dimOf(iCounts)));
    info(" == == == == == (Next, array types that dimOf() does not support.)");
    info("--(Next, normal anytype array, dimOf() always returns 0.)");
    info(int2Str(dimOf(anyThings)));
    info("--(Next, an instance of class X++ Array, dimOf() always returns 0.)");

    myArrayObj = new Array(Types::Integer);
    myArrayObj.value(1,501);
    info(int2Str(dimOf(myArrayObj)));
    info("--(Next, the lastIndex method provides size information about Array instances.)");
    info(int2Str(myArrayObj.lastIndex()));
    info("--(Next, normal str array, dimOf() does not accept it, job is halted.)");
    info(int2Str(dimOf(sNames)));
    info("End of job.");

}
/************  Actual Infolog output
Message (11:10:06 am)
Start of job.
--(Next, normal int array, dimOf() accepts it.)
20
--(Next, normal enum array, dimOf() accepts it.)
22
--(Next, normal extended data type array (based on enum), dimOf() accepts it.)
24
--(Next, dynamic int array, dimension not yet set.)
0
--(Next, dynamic int array, after dimension established.)
16
== == == == == (Next, array types that dimOf() does not support.)
--(Next, normal anytype array, dimOf() always returns 0.)
0
--(Next, an instance of class X++ Array, dimOf() always returns 0.)
0
--(Next, the lastIndex method provides size information about Array instances.)
1
--(Next, normal str array, dimOf() does not accept it, job is halted.)
Error executing code: Illegal operation on this type of array. (C)JobsJobDimOfArrays - line 41
************/
/***********  Pop-up error dialog box
"Internal error number 25 in script."
This error is caused by the code line...
info(int2Str(dimOf(iCounts)));
...before iCounts was assigned at any index.
***********/

fieldId2Name

Récupère une chaîne qui représente le nom du champ spécifié par un numéro d’ID de table et un numéro d’ID de champ.

str fieldId2Name(int tableid, int fieldid)

Paramètres

Paramètre Descriptif
tableid Numéro d’ID de la table. Note: Utilisez la fonction tableName2Id pour spécifier l’ID d’une table.
fieldid Numéro d’ID du champ.

Valeur retournée

Nom du champ.

Remarques

Pour renvoyer une version imprimable du nom de champ, utilisez la fonction fieldId2PName .

Example

L’exemple suivant définit fn sur le nom du champ dans la table Customer (CustGroup) qui a un ID de champ de 7.

static void fieldId2NameExample(Args _arg)
{
    str fn;
    fn = fieldId2Name(tableName2Id("Customer"),7);
}

fieldId2PName

Récupère le nom imprimable du champ spécifié par un numéro d’ID de table et un numéro d’ID de champ.

str fieldId2PName(int tableid, int fieldid)

Paramètres

Paramètre Descriptif
tableid Numéro d’ID de la table. Note: Utilisez la fonction tableName2Id pour spécifier l’ID d’une table.
fieldid Numéro d’ID du champ. Note: Utilisez la fonction fieldName2Id pour spécifier l’ID d’un champ.

Valeur retournée

Nom du champ.

Example

static void fieldId2PNameExample(Args _arg)
{
    str name;
    tableid _tableId;
    fieldid _fieldid;

    _tableId = tableName2Id("Address");
    _fieldId = fieldName2Id(_tableId, "Name");
    name = fieldId2PName(_tableId, _fieldid);
    print name;
}

fieldName2Id

Récupère l’ID de champ du champ de table spécifié par un numéro d’ID de table et un numéro d’ID de champ.

int fieldName2Id(int tableid, str fieldname)

Paramètres

Paramètre Descriptif
tableid Numéro d’ID de la table. Note: Utilisez la fonction tableName2Id pour spécifier l’ID d’une table.
nom_champ Nom du champ.

Valeur retournée

ID du champ spécifié par les paramètres tableid et fieldname .

Example

static void fieldName2IdExample(Args _arg)
{
    int id;

    id = fieldName2Id(tableName2Id("Address"), "Name");
    // Returns 6. Name is the 6th field in the Address table.
    print id;
}

indexId2Name

Récupère le nom d’un index.

str indexId2Name(int tableid, int indexid)

Paramètres

Paramètre Descriptif
tableid ID de la table à laquelle appartient l’index.
indexid ID de l’index.

Valeur retournée

Nom de l’index.

Example

static void indexId2NameExample(Args _arg)
{
    str s;
    tableid id;
    indexid idx;

    id  = tableName2Id("Address");
    idx = indexName2Id(id, "AddrIdx");
    s = indexId2Name(id, idx);
    print "The result of calling indexId2Name is " + s;
}

indexName2Id

Récupère l’ID d’un index.

int indexName2Id(int tableid, str indexname)

Paramètres

Paramètre Descriptif
tableid ID de la table à laquelle appartient l’index.
indexname Nom de l’index.

Valeur retournée

ID de l’index.

Example

static void indexName2IdExample(Args _arg)
{
    indexid idx;
    tableid id;

    id  = tableName2Id("Address");
    idx = indexName2Id(id, "AddrIdx");
    print "Index ID for index name AddrIdx of table Address is " + int2Str(idx);
}

tableId2Name

Récupère une chaîne qui contient le nom d’une table.

str tableId2Name(int _tableid)

Paramètres

Paramètre Descriptif
_tableid ID de la table.

Valeur retournée

Nom de la table.

Example

static void tableId2NameExample(Args _arg)
{
    str s;
    tableid id;

    // Get the ID for table name Address.
    id = tableName2Id("Address");
    print "ID for table name Address is " + int2Str(id);

    // Get the name from the table ID.
    s = tableId2Name(id);
    print "Name for table ID " + int2Str(id) + " is " + s;

    // Get the printable name from the table ID.
    s = tableId2PName(id);
    print "Printable name for table ID " + int2Str(id) + " is " + s;
}

tableId2PName

Récupère une chaîne qui contient le nom imprimable (l’étiquette) d’une table.

str tableId2PName(int _fieldid)

Paramètres

Paramètre Descriptif
_fieldid ID de la table.

Valeur retournée

Étiquette de la table.

Example

static void tableId2NameExample(Args _arg)
{
    str s;
    tableid id;

    // Get the ID for table name Address.
    id = tableName2Id("Address");
    print "ID for table name Address is " + int2Str(id);

    // Get the name from the table ID.
    s = tableId2Name(id);
    print "Name for table ID " + int2Str(id) + " is " + s;

    // Get the printable name from the table ID.
    s = tableId2PName(id);
    print "Printable name for table ID " + int2Str(id) + " is " + s;
}

tableName2Id

Récupère l’ID d’une table.

int tableName2Id(str _name)

Paramètres

Paramètre Descriptif
_nom Nom de la table.

Valeur retournée

ID de la table.

Example

static void tableName2IdExample(Args _arg)
{
    str s;
    tableid id;

    // Get the ID for the Address table name.
    id = tableName2Id("Address");
    print "ID for the Address table name is " + int2Str(id);

    // Get the name from the table ID.
    s = tableId2Name(id);
    print "Name for table ID " + int2Str(id) + " is " + s;

    // Get the printable name from the table ID.
    s = tableId2PName(id);
    print "Printable name for table ID " + int2Str(id) + " is " + s;
}

typeOf

Récupère le type d’un élément.

enum typeOf(anytype _object)

Paramètres

Paramètre Descriptif
_objet Élément pour lequel retourner le type.

Valeur retournée

Valeur d’énumération système Types .

Example

L’exemple suivant teste si le premier élément d’un conteneur, c, est un autre conteneur qui contient un entier unique.

if(typeof(conpeek(c, 1)) != Types::Container ||
conlen(conpeek(c, 1)) != 1 ||
typeof(conpeek(conpeek(c, 1), 1)) != Types::Integer)
{
    // More code.
}