GlideQuery : inclus, global

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 30 minutes de lecture
  • Le script include GlideQuery est une alternative à l’API GlideRecord pour effectuer des opérations CRUD sur les données d’enregistrement à partir de scripts côté serveur.

    L’include de script GlideQuery vous permet d’effectuer les opérations suivantes :

    • Utilisez des objets et des types JavaScript standard pour les requêtes et les résultats.
    • Diagnostiquez rapidement les erreurs de requête grâce à des vérifications supplémentaires et effacez les messages d’erreur.
    • Simplifiez votre code en évitant les modèles de requêtes passe-partout.
    • Évitez les problèmes de performances courants sans avoir besoin d’une connaissance approfondie de GlideRecord.
    Utilisez l’include de script GlideQuery dans les scripts côté serveur inclus dans le champ d’application ou globaux. Lorsqu’il est utilisé dans une application incluse dans le périmètre, il doit être précédé du périmètre global.
    new global.GlideQuery('sys_user')
    // ...
    Cet include de script nécessite le module d’extension GlideQuery [com.sn_glidequery].

    Implémentation

    Cet include de script fonctionne conjointement avec l’API de flux et l’API facultative dans un Modèle de générateur où la méthode appelle la chaîne, chaque méthode s’appuyant sur le résultat retourné de la méthode précédente. Utilisez des méthodes pour définir les attributs de la requête. Les méthodes ne s’exécutent pas tant que vous n’avez pas appelé une méthode terminal, une méthode qui renvoie un résultat de requête, ce qui vous permet de définir les exigences de la requête avant de l’exécuter.

    Si la requête ne renvoie qu’un seul enregistrement, le système enveloppe le résultat dans un objet facultatif. Si la requête renvoie un flux d’enregistrements, le système enveloppe le résultat dans un objet Stream. Ces objets vous permettent de gérer le résultat à l’aide d’un ensemble de méthodes dans chaque API.

    Par exemple, ce script effectue une requête sur la table Tâche, regroupe les enregistrements par priorité et renvoie chaque priorité dont le total des réaffectations est supérieur à quatre.

    var query = new global.GlideQuery('task')
        .where('active', true) //Returns new GlideQuery object with a "where" clause.
        .groupBy('priority') //Returns new GlideQuery object with a "group by" clause.
        .aggregate('sum', 'reassignment_count') //Returns new GlideQuery object with a "sum(reassignment_count)" clause.
        .having('sum', 'reassignment_count', '>', 4) //Returns new GlideQuery object with a "having reassignment_count > 4" clause.
        .select() //Returns a stream of records wrapped in a Stream object.  
        .forEach(function (priority){ //Terminal method in the Stream class that executes the query and returns the result. 
          gs.info("Priority " + priority.group.priority + ": " + priority.sum.reassignment_count + " reassignments");
        });
    Sortie :
    Priority 1: 11 reassignments
    Priority 3: 6 reassignments
    Priority 5: 5 reassignments

    Gestion des erreurs

    L’include de script GlideQuery lève une erreur lorsque votre requête présente un problème et inclut une explication claire pour vous guider. Cet include de script vérifie les éléments suivants :

    • Champs non valides
    • Types de valeurs non valides pour un champ
    • Valeurs non valides pour les champs de choix
    • Opérateurs de requête non valides

    Par exemple, l’exemple de code suivant génèrerait une erreur, car le champ interrogé n’existe pas dans la table.

    new global.GlideQuery('task')
        .where('id', '4717dfe5a9fe198100450448b2404c16') // should be 'sys_id'
        .select('description', 'severity')
        .toArray(100);
      // Error: Unable to find field 'id' in table 'task'. Known fields: active, activity_due, ...

    Cet exemple de code génèrerait une erreur, car le type de données de l’un des arguments est incorrect.

    new global.GlideQuery('task')
        .where('priority', 'one') // priority is an integer (should be 1)
        .select('description', 'severity')
        .toArray(100);
      // Error: Unable to match value ['one'] with field 'priority' in table 'task'. Expecting type 'integer'

    Réutiliser

    Étant donné que les objets GlideQuery sont immuables, vous pouvez les réutiliser ultérieurement dans d’autres parties de votre code. Par exemple, ce script crée une requête, puis utilise l’objet GlideQuery ultérieurement pour générer un rapport.

    var highPriorityTasks = new global.GlideQuery('task')
        .where('active', true)
        .where('priority', 1);
    
    generateReport(highPriorityTasks);
    notifyOwners(highPriorityTasks);
    var avgReassignmentCount = highPriorityTasks
        .avg('reassignment_count')
        .orElse(0)
    

    Limitations

    Le script include GlideQuery ne prend pas en charge :

    • Lire ou écrire sur des tables qui n’autorisent pas l’accès à partir d’autres périmètres.
    • Lecture de requêtes codées.
    • Les objets GlideDate ou GlideDateTime, qui sont lus comme des chaînes JavaScript.
    • Champs de devises FX.
    • Mise à jour des types de champ journal.
    • Requêtes avec une logique conditionnelle ambiguë. Par exemple, la requête suivante n’est pas claire car le système ne sait pas s’il faut exécuter (active = vrai ET nom != null) OU last_name = Luddy ou active = vrai ET (nom != null OU last_name = Luddy).
      var user = new global.GlideQuery('sys_user')
        .where('active', true)
        .whereNotNull('name')
        .orWhere('last_name', 'Luddy')
        .selectOne()
        .get()

      Voir la méthode where() pour comprendre comment imbriquer une requête enfant à la place.

    Remarque :
    Étant donné que l’include de script GlideQuery convertit les objets GlideRecord en objets JavaScript standard, l’exécution des requêtes peut prendre plus de temps. Pour réduire les problèmes de performances, évitez de créer des boucles qui itèrent sur un grand nombre d’enregistrements.

    Méthodes intermédiaires et terminales dans GlideQuery

    L’include de script GlideQuery utilise deux catégories de méthodes : intermédiaire et terminale. Les méthodes intermédiaires sont les méthodes qui renvoient un flux, une API utilisée pour interagir avec un flux d’éléments comme des enregistrements, permettant un style de syntaxe fluide où les appels sont enchaînés. Les méthodes terminales sont les méthodes qui ne renvoient pas de flux et arrêtent donc la chaîne d’appels de méthode Stream .

    Dans l’include de script GlideQuery , des méthodes telles que where(),orderBy() et disableWorkflow() sont des méthodes intermédiaires qui renvoient un nouvel objet GlideQuery. De même, les méthodes terminales les plus populaires du script include GlideQuery , select() et selectOne(), sont des méthodes terminales. Ces méthodes sont appelées lorsque GlideQuery a terminé d’être configuré et qu’il est prêt à commencer à traiter les enregistrements. Il est important de garder à l’esprit les différences entre ces deux types de méthodes lors de la configuration des appels à l’include de script GlideQuery en fonction de vos cas d’utilisation spécifiques. Pour plus d’informations sur les méthodes intermédiaires et terminales, consultez l’article GlideQuery - Traitement de flux Partie 1.

    Les méthodes suivantes sont classées comme intermédiaires :

    • aggregate(Chaîne, aggregateType, champ de chaîne)
    • disableAutoSysFields()
    • disableWorkflow()
    • forceUpdate()
    • groupBy (champs de chaînes)
    • having(String aggregateType, champ de chaîne, opérateur de chaîne, valeur de numéro)
    • limit(limite de nombre)
    • orderBy(champs de chaînes)
    • orderByDesc(String fieldOrAggregate, String field)
    • orWhere(String fieldOrQuery, opérateur de chaîne, n’importe quelle valeur)
    • ouWhereNotNull(champ de chaîne)
    • orWhereNull(champ de chaîne)
    • where(String fieldOrQuery, Opérateur de chaîne, N’importe quelle valeur)
    • whereNotNull(champ de chaîne)
    • whereNull(champ de chaîne)
    • withAcls()

    Les méthodes suivantes sont classées comme terminales :

    • avg (champ de chaîne)
    • count()
    • deleteMultiple()
    • get(String key, Array selectedFields)
    • getBy(Objet cléValeurs, Tableau selectedFields)
    • insérer(Objet cléValeurs, Objet selectedFields)
    • insertOrUpdate(Object changes, Object selectedFields)
    • max(Champ de chaîne)
    • min(Champ de chaîne)
    • select(champs de chaînes)
    • selectOne(champs de chaîne)
    • somme(champ de chaîne)
    • toGlideRecord()
    • mettre à jour(Objet modifié, objet selectedFields)
    • updateMultiple(L’objet change)
    Remarque :
    parse(String table, String encoded_query) n’est ni intermédiaire ni terminal, mais statique.

    GlideQuery : GlideQuery (table de chaînes)

    Instancie un objet GlideQuery utilisé pour générer et exécuter des requêtes d’enregistrement.

    Tableau 1. Paramètres
    Nom Type Description
    table Chaîne Table à interroger.
    Tableau 2. Renvoie
    Type Description
    Aucun

    Cet exemple instancie une requête de la table Utilisateur.

    var query = new global.GlideQuery('sys_user');

    GlideQuery : agrégat(String, aggregateType, champ de chaîne)

    Regroupe un champ à l’aide d’une fonction d’agrégation spécifiée.

    Utilisez cette méthode pour construire des requêtes qui s’agrègent sur plusieurs champs ou utilisent plusieurs fonctions d’agrégation, ou si vous devez utiliser la méthode groupBy(). Si vous ne souhaitez regrouper qu’un seul champ avec une seule fonction, et que vous n’avez pas besoin d’utiliser groupBy(), utilisez plutôt l’une de ces méthodes :

    • avg()
    • min()
    • max()
    • count()
    Tableau 3. Paramètres
    Nom Type Description
    type d’agrégat Chaîne Type de fonction d’agrégation à exécuter. Les options incluent :
    • min : renvoie la plus petite valeur de tous les enregistrements correspondants.
    • max : renvoie la valeur la plus élevée de tous les enregistrements correspondants.
    • sum : renvoie la somme de tous les enregistrements correspondants.
    • avg : renvoie la moyenne de tous les enregistrements correspondants.
    • count : renvoie le nombre d’enregistrements correspondants.
    champ Chaîne Champ sur lequel effectuer l’opération.
    Tableau 4. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.
    Ce script effectue une requête sur la table Tâche, regroupe les enregistrements par priorité et renvoie chaque priorité dont le total des réaffectations est supérieur à quatre.
    var query = new global.GlideQuery('task')
        .where('active', true) //Returns new GlideQuery object with a "where" clause.
        .groupBy('priority') //Returns new GlideQuery object with a "group by" clause.
        .aggregate('sum', 'reassignment_count') //Returns new GlideQuery object with a "sum(reassignment_count)" clause.
        .having('sum', 'reassignment_count', '>', 4) //Returns new GlideQuery object with a "having reassignment_count > 4" clause.
        .select() //Returns a stream of records wrapped in a Stream object.  
        .forEach(function (priority){ //Terminal method in the Stream class that executes the query and returns the result. 
          gs.info("Priority " + priority.group.priority + ": " + priority.sum.reassignment_count + " reassignments");
        });
    Sortie :
    Priority 1: 11 reassignments
    Priority 3: 6 reassignments
    Priority 5: 5 reassignments

    GlideQuery : avg (champ de chaîne)

    Renvoie la moyenne agrégée d’un champ numérique donné.

    Vous ne pouvez utiliser cette méthode que sur les champs des types suivants :
    • Entier
    • Long
    • Nombre à virgule flottante
    • Double
    • Devise
    Tableau 5. Paramètres
    Nom Type Description
    champ Chaîne Champ sur lequel effectuer l’opération.
    Tableau 6. Renvoie
    Type Description
    Facultatif Objet qui contient la moyenne agrégée du champ donné.

    Cet exemple montre comment renvoyer le nombre moyen d’erreurs dans la table cmdb_ci.

    var faults = new global.GlideQuery('cmdb_ci')
        .avg('fault_count')
        .orElse(0);
    
    gs.info(JSON.stringify(faults));

    Sortie :

    0.0037

    GlideQuery : count()

    Renvoie le nombre d’enregistrements qui correspondent à la requête.

    Tableau 7. Paramètres
    Nom Type Description
    Aucun
    Tableau 8. Renvoie
    Type Description
    Numéro Nombre d’enregistrements qui correspondent à la requête.

    Cet exemple renvoie le nombre d’enregistrements actifs dans la table Utilisateur.

    var userCount = new global.GlideQuery('sys_user')
        .where('active', true)
        .count();

    Sortie :

    612

    GlideQuery : deleteMultiple()

    Supprime tous les enregistrements de la table spécifiée par les clauses Where précédentes.

    Tableau 9. Paramètres
    Nom Type Description
    Aucun
    Tableau 10. Renvoie
    Type Description
    Aucun

    Cet exemple supprime tous les enregistrements actifs de la table Utilisateur dont le nom de famille est Jeter.

    var query = new global.GlideQuery('sys_user')
        .where('active', true)
        .where('last_name', 'Jeter')
        .deleteMultiple();

    GlideQuery : disableAutoSysFields()

    Désactive la mise à jour des champs système ou des champs dont le nom commence par le préfixe système , tels que sys_created_on, sys_updated_on et sys_mod_count. S’applique uniquement à la requête spécifiée.

    Tableau 11. Paramètres
    Nom Type Description
    Aucun
    Tableau 12. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple ajoute un enregistrement à la table de tâches, mais ne définit pas les champs système. Sans appeler cette méthode, l’exemple ci-dessous mettrait à jour sys_updated_on, sys_mod_count, etc.

    var query = new global.GlideQuery('task')
        .disableAutoSysFields()
        .insert({ description: 'example', priority: 1 });

    GlideQuery : disableWorkflow()

    Désactive toutes les règles métier, tous les flux, tous les workflows ou tous les enregistrements d’audit qui pourraient être exécutés ou créés à la suite de la requête.

    Tableau 13. Paramètres
    Nom Type Description
    Aucun
    Tableau 14. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple met à jour plusieurs enregistrements dans la table Tâche sans déclencher de processus business automatiques.

    var query = new global.GlideQuery('task')
        .disableWorkflow()
        .where('active', true)
        .updateMultiple({ priority: 1 });

    GlideQuery : forceUpdate()

    Force la mise à jour de la base de données, même si aucun changement n’est apporté à l’enregistrement. Par exemple, vous pouvez utiliser cette méthode pour forcer l’exécution d’une règle métier.

    Tableau 15. Paramètres
    Nom Type Description
    Aucun
    Tableau 16. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple force les mises à jour des enregistrements de tâches avec un certain sys_id.

    var forceUpdate = new global.GlideQuery('task')
        .forceUpdate()
        .where('sys_id', taskId)
        .update()

    GlideQuery : obtenir (clé de chaîne, tableau selectedFields)

    Renvoie un enregistrement unique à partir de la requête.

    Tableau 17. Paramètres
    Nom Type Description
    key Chaîne Sys_id de l’enregistrement à renvoyer.
    selectedFields Tableau Facultatif. Champs supplémentaires à retourner dans le résultat.

    Par défaut : le système renvoie toujours le sys_id.

    Tableau 18. Renvoie
    Type Description
    Facultatif Objet utilisé pour interagir avec un enregistrement unique.

    Exemple qui renvoie un enregistrement basé sur sys_id.

    var user = new global.GlideQuery('sys_user')
        .get('5137153cc611227c000bbd1bd8cd2005', ['first_name', 'last_name']) //Returns an Optional object.
        .orElse({ first_name: 'Default', last_name: 'User' }); //Method in the Optional class to return a default value.
    
    gs.info(JSON.stringify(user, null, 2));

    Sortie :

    {
       "sys_id":"5137153cc611227c000bbd1bd8cd2005",
       "first_name":"Fred",
       "last_name":"Luddy"
    }

    GlideQuery : getBy(Object keyValues, Array selectedFields)

    Renvoie un objet facultatif contenant un seul enregistrement basé sur un ensemble de paires nom-valeur à interroger. Suppose l’opérateur « = » pour chaque paire nom-valeur.

    Tableau 19. Paramètres
    Nom Type Description
    Valeurs clés Objet Objet où les clés correspondent au nom des champs et où les valeurs correspondent aux valeurs à interroger.
    selectedFields Tableau Facultatif. Champs supplémentaires à retourner dans le résultat.

    Par défaut : le système renvoie toujours le sys_id.

    Tableau 20. Renvoie
    Type Description
    Facultatif Objet utilisé pour interagir avec un enregistrement unique.

    Exemple qui renvoie un enregistrement en requérant le nom d’un utilisateur.

    var user = new global.GlideQuery('sys_user')
        .getBy({
            first_name: 'Fred',
            last_name: 'Luddy'
        }, ['first_name', 'last_name', 'city', 'active']) // select first_name, last_name, city, active
        .orElse({
            first_name: 'Nobody',
            last_name: 'Found',
            city: 'Nowhere',
            active: false
        });
    
    gs.info(JSON.stringify(user, null, 2));

    Sortie :

    {
       "first_name":"Fred",
       "last_name":"Luddy",
       "city":null,
       "active":true,
       "sys_id":"5137153cc611227c000bbd1bd8cd2005"
    }

    GlideQuery : groupBy (champs de chaîne)

    Regroupe les résultats de la requête par champ ou champs désignés.

    Vous devez utiliser cette méthode avec la méthode aggregate().

    Tableau 21. Paramètres
    Nom Type Description
    champs Chaîne ou tableau de chaînes Champ(s) sur lesquels regrouper les résultats.
    Tableau 22. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.
    Ce script effectue une requête sur la table Tâche, regroupe les enregistrements par priorité et renvoie chaque priorité dont le total des réaffectations est supérieur à quatre.
    var query = new global.GlideQuery('task')
        .where('active', true) //Returns new GlideQuery object with a "where" clause.
        .groupBy('priority') //Returns new GlideQuery object with a "group by" clause.
        .aggregate('sum', 'reassignment_count') //Returns new GlideQuery object with a "sum(reassignment_count)" clause.
        .having('sum', 'reassignment_count', '>', 4) //Returns new GlideQuery object with a "having reassignment_count > 4" clause.
        .select() //Returns a stream of records wrapped in a Stream object.  
        .forEach(function (priority){ //Terminal method in the Stream class that executes the query and returns the result. 
          gs.info("Priority " + priority.group.priority + ": " + priority.sum.reassignment_count + " reassignments");
        });
    Sortie :
    Priority 1: 11 reassignments
    Priority 3: 6 reassignments
    Priority 5: 5 reassignments

    GlideQuery : having(String aggregateType, champ de chaîne, opérateur de chaîne, valeur de numéro)

    Filtre les groupes d’agrégats afin que vous puissiez afficher uniquement les groupes de résultats qui correspondent à une condition spécifiée.

    Doit utiliser cette méthode avec les méthodes aggregate() ou groupBy().

    Tableau 23. Paramètres
    Nom Type Description
    type d’agrégat Chaîne Type de fonction d’agrégation à exécuter. Les options incluent :
    • min : renvoie la plus petite valeur de tous les enregistrements correspondants.
    • max : renvoie la valeur la plus élevée de tous les enregistrements correspondants.
    • sum : renvoie la somme de tous les enregistrements correspondants.
    • avg : renvoie la moyenne de tous les enregistrements correspondants.
    • count : renvoie le nombre d’enregistrements correspondants.
    champ Chaîne Champ sur lequel effectuer l’opération.
    opérateur Chaîne Opérateur numérique à utiliser dans l’opération.
    Les options incluent :
    • > : supérieur à.
    • < : inférieur à.
    • >= : supérieur ou égal à.
    • <= : inférieur ou égal à.
    • = : Égal à.
    • != : différent de.
    valide Numéro Valeur de nombre à utiliser dans l’opération.
    Tableau 24. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.
    Ce script effectue une requête sur la table Tâche, regroupe les enregistrements par priorité et renvoie chaque priorité dont le total des réaffectations est supérieur à quatre.
    var query = new global.GlideQuery('task')
        .where('active', true) //Returns new GlideQuery object with a "where" clause.
        .groupBy('priority') //Returns new GlideQuery object with a "group by" clause.
        .aggregate('sum', 'reassignment_count') //Returns new GlideQuery object with a "sum(reassignment_count)" clause.
        .having('sum', 'reassignment_count', '>', 4) //Returns new GlideQuery object with a "having reassignment_count > 4" clause.
        .select() //Returns a stream of records wrapped in a Stream object.  
        .forEach(function (priority){ //Terminal method in the Stream class that executes the query and returns the result. 
          gs.info("Priority " + priority.group.priority + ": " + priority.sum.reassignment_count + " reassignments");
        });
    Sortie :
    Priority 1: 11 reassignments
    Priority 3: 6 reassignments
    Priority 5: 5 reassignments

    GlideQuery : insérer(Object keyValues, Object selectedFields)

    Insère un enregistrement et renvoie un objet facultatif contenant l’enregistrement.

    Tableau 25. Paramètres
    Nom Type Description
    Valeurs clés Objet Objet contenant des paires nom-valeur à insérer dans l’enregistrement. Les champs non spécifiés seront nuls.
    selectedFields Tableau Facultatif. Champs supplémentaires à retourner dans le résultat.

    Par défaut : le système renvoie toujours le sys_id.

    Tableau 26. Renvoie
    Type Description
    Facultatif Objet utilisé pour interagir avec un enregistrement unique.

    Cet exemple montre comment insérer un enregistrement basé sur le prénom et le nom d’un utilisateur.

    var fred = new global.GlideQuery('sys_user')
        .insert({ first_name: 'Fred', last_name: 'Luddy' })
        .get();
    
    gs.info(JSON.stringify(fred, null, 2));

    Sortie :

    {
       "sys_id":"cf16eed0e82a9010f8778bda83d255d2",
       "first_name":"Fred",
       "last_name":"Luddy"
    }

    GlideQuery : insertOrUpdate(Object changes, Object selectedFields)

    Met à jour un enregistrement existant ou insère un nouvel enregistrement s’il n’en existe pas déjà un.

    Tableau 27. Paramètres
    Nom Type Description
    Changements Objet Objet contenant des paires nom-valeur à mettre à jour ou à insérer dans l’enregistrement.
    selectedFields Tableau Facultatif. Champs supplémentaires à retourner dans le résultat.

    Par défaut : le système renvoie toujours le sys_id.

    Tableau 28. Renvoie
    Type Description
    Facultatif Objet utilisé pour interagir avec un enregistrement unique.

    Cet exemple montre comment insérer un nouvel enregistrement qui n’existe pas déjà dans le système.

    // insert a new record
    var user = new GlideQuery('sys_user')
        .insertOrUpdate({
            first_name: 'George',
            last_name: 'Griffey'
        })
        .orElse(null);

    Cet exemple montre comment mettre à jour un enregistrement existant.

    // update existing record
    var user = new global.GlideQuery('sys_user')
        .insertOrUpdate({
            sys_id: '2d0efd6c73662300bb513198caf6a72e',
            first_name: 'George',
            last_name: 'Griffey' })
        .orElse(null);

    GlideQuery : limit(limite de nombre)

    Limite le nombre d’enregistrements renvoyés dans une requête.

    Tableau 29. Paramètres
    Nom Type Description
    limite Numéro Nombre d’enregistrements à renvoyer.
    Tableau 30. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple montre comment limiter les résultats renvoyés à cinq enregistrements.

    var incidents = new global.GlideQuery('incident')
        .limit(5)
        .select('priority', 'description')
        .forEach(function (incident){
            gs.info(JSON.stringify(incident, null, 2));
        });

    Sortie :

    *** Script: {
      "priority": 1,
      "description": "User can't get to any of his files on the file server.",
      "sys_id": "9d385017c611228701d22104cc95c371"
    }
    *** Script: {
      "priority": 1,
      "description": "I just moved from floor 2 to floor 3 and my laptop cannot connect to any wireless network.",
      "sys_id": "e8caedcbc0a80164017df472f39eaed1"
    }
    *** Script: {
      "priority": 1,
      "description": "User forgot their email password.",
      "sys_id": "9d3c1197c611228701cd1d94bc32d76d"
    }
    *** Script: {
      "priority": 1,
      "description": "When I try to print, my whole computer just freezes and stops working.",
      "sys_id": "8d6246c7c0a80164012fb063cecd4ace"
    }
    *** Script: {
      "priority": 3,
      "description": "Unable to login even though login credentials are correct.",
      "sys_id": "a9e30c7dc61122760116894de7bcc7bd"
    }

    GlideQuery : max(champ de chaîne)

    Renvoie le maximum d’agrégat d’un champ donné.

    Tableau 31. Paramètres
    Nom Type Description
    champ Chaîne Champ sur lequel effectuer l’opération.
    Tableau 32. Renvoie
    Type Description
    Facultatif Objet utilisé pour interagir avec un enregistrement unique.

    Cet exemple montre comment renvoyer la valeur maximale, ou la valeur alphanumérique la plus élevée, d’un champ donné.

    var name = new global.GlideQuery('sys_user')
        .max('last_name')
        .orElse('');
    
    gs.info(JSON.stringify(name));

    Sortie :

    "Zortman"

    GlideQuery : min(champ de chaîne)

    Renvoie le minimum d’agrégat d’un champ donné.

    Tableau 33. Paramètres
    Nom Type Description
    champ Chaîne Champ sur lequel effectuer l’opération.
    Tableau 34. Renvoie
    Type Description
    Facultatif Objet utilisé pour interagir avec un enregistrement unique.

    Cet exemple montre comment renvoyer la valeur minimale, ou la valeur alphanumérique la plus basse, d’un champ donné.

    var name = new global.GlideQuery('sys_user')
        .min('last_name')
        .orElse('');
    
    gs.info(JSON.stringify(name));

    Sortie :

    "Abel"

    GlideQuery : orderBy (champs de chaîne)

    Trie le résultat renvoyé par ordre croissant selon un champ donné.

    Tableau 35. Paramètres
    Nom Type Description
    champs Chaîne Champs séparés par des virgules pour trier le résultat par ordre croissant.
    Tableau 36. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple montre comment classer les résultats par ordre croissant en fonction du numéro d’enregistrement.

    var query = new global.GlideQuery('incident')
        .orderBy('number')
        .limit(5)
        .select('number', 'description') //Returns a stream of records wrapped in a Stream object.  
        .forEach(function (incident){ //Terminal method in the Stream class that executes the query and returns the result.
            gs.info(JSON.stringify(incident, null, 2));
        });

    Sortie :

    *** Script: {
      "number": "INC0000001",
      "description": "User can't access email on mail.company.com.",
      "sys_id": "9c573169c611228700193229fff72400"
    }
    *** Script: {
      "number": "INC0000002",
      "description": "User can't get to any of his files on the file server.",
      "sys_id": "9d385017c611228701d22104cc95c371"
    }
    *** Script: {
      "number": "INC0000003",
      "description": "I just moved from floor 2 to floor 3 and my laptop cannot connect to any wireless network.",
      "sys_id": "e8caedcbc0a80164017df472f39eaed1"
    }
    *** Script: {
      "number": "INC0000004",
      "description": "User forgot their email password.",
      "sys_id": "9d3c1197c611228701cd1d94bc32d76d"
    }
    *** Script: {
      "number": "INC0000005",
      "description": "CPU was 100% busy for more than 10 minutes",
      "sys_id": "e8e875b0c0a80164009dc852b4d677d5"
    }

    GlideQuery : orderByDesc(String fieldOrAggregate, String field)

    Trie le résultat renvoyé par ordre décroissant selon un champ donné.

    Tableau 37. Paramètres
    Nom Type Description
    fieldOrAggregate Chaîne Si la requête n’utilise pas la méthode aggregate(), transmettez le champ pour trier les résultats.

    Si la requête utilise la méthode aggregate(), transmettez le type de fonction d’agrégation à exécuter.

    Les options incluent :
    • min : renvoie la plus petite valeur de tous les enregistrements correspondants.
    • max : renvoie la valeur la plus élevée de tous les enregistrements correspondants.
    • sum : renvoie la somme de tous les enregistrements correspondants.
    • avg : renvoie la moyenne de tous les enregistrements correspondants.
    • count : renvoie le nombre d’enregistrements correspondants.
    champ Chaîne Facultatif. Champ permettant de trier le résultat par ordre décroissant. Requis pour les requêtes utilisant la méthode aggregate().
    Tableau 38. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple montre comment classer le résultat par nombre décroissant.

    var query = new global.GlideQuery('incident')
        .orderByDesc('number')
        .limit(5)
        .select('number', 'description') //Returns a stream of records wrapped in a Stream object.  
        .forEach(function (incident){ //Terminal method in the Stream class that executes the query and returns the result.
            gs.info(JSON.stringify(incident, null, 2));
        });

    Sortie :

    *** Script: {
      "number": "INC0009009",
      "description": "Unable to access the shared folder. Please provide access.",
      "sys_id": "57af7aec73d423002728660c4cf6a71c"
    }
    *** Script: {
      "number": "INC0009005",
      "description": "Unable to send or receive emails.",
      "sys_id": "ed92e8d173d023002728660c4cf6a7bc"
    }
    *** Script: {
      "number": "INC0009004",
      "description": "While launching the defect tracking base URL, it is redirecting to an error page.",
      "sys_id": "e329de99731423002728660c4cf6a73c"
    }
    *** Script: {
      "number": "INC0009003",
      "description": "Having an issue with users trying to access the company portal app",
      "sys_id": "9fffc328731823002728660c4cf6a742"
    }
    *** Script: {
      "number": "INC0009002",
      "description": "My computer is not detecting the headphone device. It could be an issue with the USB port.",
      "sys_id": "1c832706732023002728660c4cf6a7b9"
    }

    Cet exemple montre comment trier un résultat agrégé par la somme des incidents enfants.

    var aggQuery = new GlideQuery('incident')
        .aggregate('sum', 'child_incidents')
        .groupBy('category')
        .orderByDesc('sum', 'child_incidents')
        .select()
        .forEach(function (category){
            gs.info(JSON.stringify(category, null, 2));    
        });

    Sortie :

    *** Script: {
      "group": {
        "category": "hardware"
      },
      "sum": {
        "child_incidents": 2
      }
    }
    *** Script: {
      "group": {
        "category": "inquiry"
      },
      "sum": {
        "child_incidents": 1
      }
    }
    *** Script: {
      "group": {
        "category": "software"
      },
      "sum": {
        "child_incidents": 0
      }
    }
    *** Script: {
      "group": {
        "category": ""
      },
      "sum": {
        "child_incidents": null
      }
    }
    *** Script: {
      "group": {
        "category": "database"
      },
      "sum": {
        "child_incidents": null
      }
    }
    *** Script: {
      "group": {
        "category": "network"
      },
      "sum": {
        "child_incidents": null
      }
    }

    GlideQuery - orWhere(String fieldOrQuery, opérateur de chaîne, n’importe quelle valeur)

    Ajoute une clause OR à une requête qui renvoie des valeurs basées sur une condition donnée.

    Remarque :
    Faites précéder cette méthode des méthodes where(), whereNull() ou whereNotNull().
    Tableau 39. Paramètres
    Nom Type Description
    fieldOrQuery Chaîne ou GlideQuery Champ ou un autre objet GlideQuery utilisé dans la clause where. Si vous transmettez un champ, vous pouvez remonter pas à pas jusqu’à la valeur souhaitée. Par exemple, « company.name ».
    opérateur Chaîne Facultatif. Opérateur utilisé dans la clause OR. Si vous ne transmettez pas d’argument, le système utilise l’opérateur =. Vous n’avez pas besoin d’inclure une valeur d’espace réservé.
    valide N'importe lequel Valeur utilisée dans la clause OR.
    Tableau 40. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple montre comment ajouter une clause OR simple à une requête.

    var query = new global.GlideQuery('sys_user')
       .where('failed_attempts', '>', 0)
       .orWhere('last_login', '<', '2019-04-15')
       .select()
       .forEach(function (user){
          gs.info(JSON.stringify(user, null, 2));
       });

    Sortie :

    *** Script: {
      "sys_id": "005d500b536073005e0addeeff7b12f4"
    }
    *** Script: {
      "sys_id": "d999e5fc77e72300454792718a10611d"
    }
    *** Script: {
      "sys_id": "30ad318577ab2300454792718a10619e"
    }
    *** Script: {
      "sys_id": "4ac73ecd738123002728660c4cf6a72c"
    }
    *** Script: {
      "sys_id": "3883f4c0730123002728660c4cf6a754"
    }
    *** Script: {
      "sys_id": "3988a3ca732023002728660c4cf6a757"
    }
    *** Script: {
      "sys_id": "8ff5b254b33213005e3de13516a8dcf7"
    }

    Cet exemple montre comment ajouter une clause orWhere qui contient une requête distincte.

    // active = true OR (title = 'Vice President' AND state = 'CA')
    var query = new GlideQuery('sys_user')
       .where('active', true)
       .orWhere(new GlideQuery()
           .where('title', 'Vice President')
           .where('state', 'CA'))
       .select('name')
       .limit(5)
       .forEach(function (user){
          gs.info(JSON.stringify(user, null, 2));
       });

    Sortie :

    *** Script: {
      "name": "ITIL User",
      "sys_id": "681b365ec0a80164000fb0b05854a0cd"
    }
    *** Script: {
      "name": "SOAP Guest",
      "sys_id": "155699460a0a0b2b009e27c10b7f68f6"
    }
    *** Script: {
      "name": "System Administrator",
      "sys_id": "6816f79cc0a8016401c5a33be04be441"
    }
    *** Script: {
      "name": "Alva Pennigton",
      "sys_id": "ca826bf03710200044e0bfc8bcbe5d89"
    }
    *** Script: {
      "name": "Benchmark Scheduler",
      "sys_id": "d3383a875b0132003d1c484c11f91a5b"
    }

    GlideQuery : orWhereNotNull (champ de chaîne)

    Ajoute une clause OR qui renvoie les enregistrements qui ne contiennent pas de valeur nulle dans un champ donné.

    Remarque :
    Faites précéder cette méthode des méthodes where(), whereNull() ou whereNotNull().
    Tableau 41. Paramètres
    Nom Type Description
    champ Chaîne Champ utilisé dans la requête.
    Tableau 42. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple montre comment interroger la table Utilisateur et renvoyer des résultats dans lesquels le prénom ou le nom de famille n’est pas nul.

    var query = new global.GlideQuery('sys_user')
       .whereNotNull('first_name')
       .orWhereNotNull('last_name')
       .select('name')
       .limit(5)
       .forEach(function (user){
          gs.info(JSON.stringify(user, null, 2));
       });

    Sortie :

    *** Script: {
      "name": "ITIL User",
      "sys_id": "681b365ec0a80164000fb0b05854a0cd"
    }
    *** Script: {
      "name": "System Administrator",
      "sys_id": "6816f79cc0a8016401c5a33be04be441"
    }
    *** Script: {
      "name": "Alva Pennigton",
      "sys_id": "ca826bf03710200044e0bfc8bcbe5d89"
    }
    *** Script: {
      "name": "Benchmark Scheduler",
      "sys_id": "d3383a875b0132003d1c484c11f91a5b"
    }
    *** Script: {
      "name": "Allyson Gillispie",
      "sys_id": "06826bf03710200044e0bfc8bcbe5d8a"
    }

    GlideQuery : orWhereNull (champ de chaîne)

    Ajoute une clause OU à une requête qui renvoie les enregistrements qui contiennent une valeur nulle dans un champ donné.

    Remarque :
    Faites précéder cette méthode des méthodes where(), whereNull() ou whereNotNull().
    Tableau 43. Paramètres
    Nom Type Description
    champ Chaîne Champ utilisé dans la requête.
    Tableau 44. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple montre comment interroger la table Utilisateur et renvoyer des enregistrements dont le prénom ou le nom est nul.

    var query = new global.GlideQuery('sys_user')
       .whereNull('last_name')
       .orWhereNull('first_name')
       .select('first_name', 'last_name')
       .forEach(function (user){
          gs.info(JSON.stringify(user, null, 2));
       });

    Sortie :

    *** Script: {
      "first_name": "ml.admin",
      "last_name": null,
      "sys_id": "88aad6c5c73003005f1b78d48b9763a5"
    }
    *** Script: {
      "first_name": "Sitemap Scheduler User",
      "last_name": null,
      "sys_id": "85388c25b71011104eed4643ae11a993"
    }
    *** Script: {
      "first_name": null,
      "last_name": "Guest",
      "sys_id": "5136503cc611227c0183e96598c4f706"
    }
    *** Script: {
      "first_name": "ml_report.user",
      "last_name": null,
      "sys_id": "b6bad6c5c73003005f1b78d48b97632a"
    }

    GlideQuery : parse(Table de chaînes, Chaîne encoded_query )

    Ajoute une requête codée à une nouvelle requête GlideQuery .

    Cette méthode ne prend pas en charge tous les opérateurs de requête codée GlideRecord . Les opérateurs suivants sont actuellement pris en charge :

    = RIEN GT_FIELD PAS DANS
    != ENTRE GT_OR_EQUALS_FIELD DIFFÉRENT DE
    > CONTIENT DANS NSAMEAS (en anglais seulement)
    >= NE CONTIENT PAS INSTANCEOF ACTIVÉ
    < DYNAMIQUE COMME IDENTIQUES
    <= EMPTYSTRING LT_FIELD STARTSWITH
    SE TERMINE PAR LT_OR_EQUALS_FIELD
    Tableau 45. Paramètres
    Nom Type Description
    table Chaîne Table à interroger, telle qu’une tâche ou un incident.
    encoded_query Chaîne Requête codée à appliquer aux enregistrements de la table spécifiée.
    Tableau 46. Renvoie
    Type Description
    GlideQuery Objet GlideQuery contenant la requête codée.

    L’exemple suivant crée un objet GlideQuery qui contient tous les enregistrements actifs de la table de tâches, classés par champ de priorité, renvoyés sous la forme d’un objet Stream contenant uniquement le champ de description.

    GlideQuery.parse('task', 'active=true^ORDERBYpriority') // Pass the encoded query to use to parse the Task records
      .select('description') // Return the records that match the encoded query
      .forEach(doSomething); // Do some processing on each of the returned records

    GlideQuery : select (champs de chaîne)

    Renvoie les résultats de la requête sous la forme d’un objet de flux contenant les champs spécifiés.

    Remarque :
    Utilisez une méthode terminale dans la classe Stream pour obtenir le résultat de la requête. Pour plus d’informations, consultez Flux.

    Vous pouvez ajouter un marqueur à un nom de champ pour renvoyer les métadonnées du champ au lieu de la valeur du champ. Par exemple, l’utilisation du nom de champ company$DISPLAY renvoie la valeur d’affichage d’un champ de société. Marqueurs possibles :

    • DISPLAY : Renvoie la valeur d’affichage d’un champ.
    • CURRENCY_CODE : renvoie le code de devise d’un champ de devise. Par exemple, USD.
    • CURRENCY_DISPLAY : renvoie la valeur d’affichage de devise d’un champ de devise. Par exemple, 123,45 ¥.
    • CURRENCY_STRING : renvoie la chaîne de devise d’un champ de devise. Par exemple, JPY ; Débloquer le numéro 123.45.
    Tableau 47. Paramètres
    Nom Type Description
    champs Chaîne ou tableau de chaînes Facultatif. Champs à afficher dans le résultat. Vous pouvez fournir n’importe quel nombre de champs en tant qu’arguments, remonter pas à pas vers une valeur souhaitée ou utiliser un marqueur. Par exemple :
    select('first_name', 'location.city', 'company$DISPLAY');
    ou
    select(['first_name', 'location.city', 'company$DISPLAY']);

    Par défaut : le système renvoie toujours le sys_id.

    Tableau 48. Renvoie
    Type Description
    Flux Objet utilisé pour interagir avec un flux d’éléments tels que des enregistrements.

    Cet exemple montre comment sélectionner des champs à afficher à partir de la requête et utiliser $DISPLAY pour renvoyer la valeur d’affichage d’un champ.

    var stream = new global.GlideQuery('sys_user')
       .select('first_name', 'last_name', 'company$DISPLAY')
       .limit(5)
       .forEach(function (user){
          gs.info(JSON.stringify(user, null, 2));
       });

    Sortie :

    *** Script: {
      "first_name": "System",
      "last_name": "Administrator",
      "company$DISPLAY": "",
      "sys_id": "6816f79cc0a8016401c5a33be04be441"
    }
    *** Script: {
      "first_name": "Alva",
      "last_name": "Pennigton",
      "company$DISPLAY": "ACME North America",
      "sys_id": "ca826bf03710200044e0bfc8bcbe5d89"
    }
    *** Script: {
      "first_name": "Benchmark",
      "last_name": "Scheduler",
      "company$DISPLAY": "",
      "sys_id": "d3383a875b0132003d1c484c11f91a5b"
    }
    *** Script: {
      "first_name": "Allyson",
      "last_name": "Gillispie",
      "company$DISPLAY": "ACME North America",
      "sys_id": "06826bf03710200044e0bfc8bcbe5d8a"
    }
    *** Script: {
      "first_name": "SOAP",
      "last_name": "Guest",
      "company$DISPLAY": "",
      "sys_id": "155699460a0a0b2b009e27c10b7f68f6"
    }

    GlideQuery : selectOne(champs de chaîne)

    Renvoie le résultat de la requête sous la forme d’un objet facultatif contenant les champs spécifiés.

    Utilisez cette méthode lors du renvoi d’un enregistrement unique ou pour vérifier si un enregistrement existe. Si vous renvoyez plusieurs enregistrements, utilisez la méthode select() pour renvoyer un objet Stream.

    Vous pouvez ajouter un marqueur à un nom de champ pour renvoyer les métadonnées du champ au lieu de la valeur du champ. Par exemple, l’utilisation du nom de champ company$DISPLAY renvoie la valeur d’affichage d’un champ de société. Marqueurs possibles :

    • DISPLAY : Renvoie la valeur d’affichage d’un champ.
    • CURRENCY_CODE : renvoie le code de devise d’un champ de devise. Par exemple, USD.
    • CURRENCY_DISPLAY : renvoie la valeur d’affichage de devise d’un champ de devise. Par exemple, 123,45 ¥.
    • CURRENCY_STRING : renvoie la chaîne de devise d’un champ de devise. Par exemple, JPY ; Débloquer le numéro 123.45.
    Tableau 49. Paramètres
    Nom Type Description
    champs Chaîne ou tableau de chaînes Facultatif. Champs à afficher dans le résultat. Vous pouvez fournir n’importe quel nombre de champs en tant qu’arguments, remonter pas à pas vers une valeur souhaitée ou utiliser un marqueur. Par exemple :
    selectOne('first_name', 'location.city', 'company$DISPLAY');
    ou
    selectOne(['first_name', 'location.city', 'company$DISPLAY']);

    Par défaut : le système renvoie toujours le sys_id.

    Tableau 50. Renvoie
    Type Description
    Facultatif Objet utilisé pour interagir avec un enregistrement unique.

    Cet exemple montre comment retourner un seul enregistrement en tant qu’objet facultatif et afficher les champs spécifiés.

    var user = new global.GlideQuery('sys_user')
        .where('zip', '12345')
        .whereNotNull('last_name')
        .selectOne('first_name', 'last_name', 'company$DISPLAY')
        .get();
    
    gs.info(JSON.stringify(user, null, 2));

    Sortie :

    {
       "first_name":"Abel",
       "last_name":"Tuter",
       "company$DISPLAY":"ACME South America",
       "sys_id":"62826bf03710200044e0bfc8bcbe5df1"
    }

    GlideQuery : somme (champ de chaîne)

    Renvoie la somme des agrégats d’un champ numérique donné.

    Vous ne pouvez utiliser cette méthode que sur les champs des types suivants :
    • Entier
    • Long
    • Nombre à virgule flottante
    • Double
    • Devise
    Tableau 51. Paramètres
    Nom Type Description
    champ Chaîne Champ sur lequel effectuer l’opération.
    Tableau 52. Renvoie
    Type Description
    Facultatif Objet utilisé pour interagir avec un enregistrement unique.

    Cet exemple montre comment renvoyer la somme de toutes les erreurs dans la table cmdb_ci.

    var totalFaults = new global.GlideQuery('cmdb_ci')
        .sum('fault_count')
        .orElse(0);
    
    gs.info(JSON.stringify(totalFaults));

    Sortie :

    10

    GlideQuery - toGlideRecord()

    Renvoie un objet GlideRecord qui représente la requête actuelle. Renvoie un objet GlideAggregrate si la requête utilise la méthode GlideQuery.aggregate().

    Après avoir transformé la requête, utilisez la méthode query() dans les classes GlideRecord ou GlideAggregate pour interroger la base de données.

    Tableau 53. Paramètres
    Nom Type Description
    Aucun
    Tableau 54. Renvoie
    Type Description
    GlideRecord ou GlideAggregate Objet GlideRecord qui contient la requête. Si vous avez utilisé la méthode GlideQuery.aggregate(), la méthode renvoie un objet GlideAggregrate à la place.

    Cet exemple montre comment transformer un objet GlideQuery en GlideRecord.

    var userGr = new global.GlideQuery('sys_user')
        .where('active', true)
        .whereNotNull('first_name')
        .limit(10)
        .toGlideRecord();
    userGr.query();

    GlideQuery : mettre à jour (objets modifiés, objet selectedFields)

    Met à jour un enregistrement existant qui correspond aux conditions définies.

    Avant d’utiliser cette méthode, appelez la méthode where() pour spécifier les conditions qu’un enregistrement doit remplir pour être mis à jour.

    Tableau 55. Paramètres
    Nom Type Description
    Changements Objet Objet contenant les paires nom-valeur à mettre à jour dans l’enregistrement. Les noms doivent correspondre aux champs de la table.
    selectedFields Tableau Facultatif. Champs supplémentaires à retourner dans le résultat.

    Par défaut : le système renvoie toujours le sys_id.

    Tableau 56. Renvoie
    Type Description
    Facultatif Objet utilisé pour interagir avec un enregistrement unique.

    Cet exemple montre comment mettre à jour un enregistrement avec de nouvelles valeurs.

    var updateRecord = new global.GlideQuery('sys_user')
        .where('sys_id', '0a826bf03710200044e0bfc8bcbe5d7a')
        .update({ city: 'Los Angeles' });

    GlideQuery : updateMultiple (changements d’objets)

    Met à jour tous les enregistrements existants qui correspondent aux conditions définies. Renvoie le nombre d’enregistrements mis à jour.

    Avant d’utiliser cette méthode, appelez la méthode where() pour spécifier les conditions que les enregistrements doivent remplir pour être mis à jour.

    Tableau 57. Paramètres
    Nom Type Description
    Changements Objet Objet contenant les paires nom-valeur à mettre à jour dans l’enregistrement. Les noms doivent correspondre aux champs de la table.
    Tableau 58. Renvoie
    Type Description
    Objet Objet contenant le nombre d’enregistrements qui ont été mis à jour. Les clés sont les suivantes :
    • rowCount : nombre de lignes mises à jour dans la table.

    Cet exemple montre comment mettre à jour des enregistrements qui correspondent à des critères définis.

    var update = new global.GlideQuery('sys_user')
        .where('active', false)
        .where('last_name', 'Griffey')
        .updateMultiple({ active: true });
    
    gs.info(JSON.stringify(update));

    Sortie :

    {"rowCount":1}

    GlideQuery - where(String fieldOrQuery, String operator, Any value)

    Ajoute une clause Where à la requête qui renvoie des valeurs basées sur une condition donnée.

    Remarque :
    Cette méthode n’est pas précédée des méthodes orWhere(), orWhereNull() ou orWhereNotNull( ).
    Tableau 59. Paramètres
    Nom Type Description
    fieldOrQuery Chaîne ou GlideQuery Champ ou un autre objet GlideQuery utilisé dans la clause where. Si vous transmettez un champ, vous pouvez remonter pas à pas jusqu’à la valeur souhaitée. Par exemple, « company.name ».
    opérateur Chaîne Facultatif. Opérateur utilisé dans la clause where. Si vous ne transmettez pas d’argument, le système utilise l’opérateur =.
    valide N'importe lequel Valeur utilisée dans la clause where.
    Tableau 60. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple montre comment renvoyer les enregistrements de la table Utilisateur où actif est vrai et où la dernière connexion de l’utilisateur est ultérieure à une date spécifiée.

    var query = new global.GlideQuery('sys_user')
       .where('active', true)
       .where('last_login', '>', '2018-01-01')
       .limit(5)
       .select()
       .forEach(function (user){
          gs.info(JSON.stringify(user, null, 2));
       });

    Sortie :

    *** Script: {
      "sys_id": "6816f79cc0a8016401c5a33be04be441"
    }
    *** Script: {
      "sys_id": "005d500b536073005e0addeeff7b12f4"
    }
    *** Script: {
      "sys_id": "d999e5fc77e72300454792718a10611d"
    }
    *** Script: {
      "sys_id": "30ad318577ab2300454792718a10619e"
    }
    *** Script: {
      "sys_id": "3883f4c0730123002728660c4cf6a754"
    }

    Cet exemple montre comment renvoyer les enregistrements de la table Incident où actif est vrai et où la priorité ou la gravité est 1.

    // active = true AND (priority = 1 OR severity = 1)
    var query = new GlideQuery('incident')
        .where('active', true)
        .where(new GlideQuery()
            .where('priority', 1)
            .orWhere('severity', 1))
       .limit(5)
       .select()
       .toArray(5)
    
    gs.info(JSON.stringify(query, null, 2));

    Sortie :

    [
       {
          "sys_id":"b0f31e5673500010c2e7660c4cf6a711"
       },
       {
          "sys_id":"8ff5b254b33213005e3de13516a8dcf7"
       },
       {
          "sys_id":"d999e5fc77e72300454792718a10611d"
       },
       {
          "sys_id":"30ad318577ab2300454792718a10619e"
       },
       {
          "sys_id":"3883f4c0730123002728660c4cf6a754"
       }
    ]

    GlideQuery : whereNotNull (champ de chaîne)

    Renvoie les enregistrements qui ne contiennent pas de valeur Null dans un champ donné.

    Remarque :
    Cette méthode n’est pas précédée des méthodes orWhere(), orWhereNull() ou orWhereNotNull( ).
    Tableau 61. Paramètres
    Nom Type Description
    champ Chaîne Champ utilisé dans la requête.
    Tableau 62. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple montre comment interroger la table Utilisateur et renvoyer des résultats lorsque le champ first_name n’est pas nul.

    var query = new global.GlideQuery('sys_user')
       .whereNotNull('first_name')
       .select('name')
       .limit(5)
       .forEach(function (user){
          gs.info(JSON.stringify(user, null, 2));
       });

    Sortie :

    *** Script: {
      "name": "System Administrator",
      "sys_id": "6816f79cc0a8016401c5a33be04be441"
    }
    *** Script: {
      "name": "Alva Pennigton",
      "sys_id": "ca826bf03710200044e0bfc8bcbe5d89"
    }
    *** Script: {
      "name": "Benchmark Scheduler",
      "sys_id": "d3383a875b0132003d1c484c11f91a5b"
    }
    *** Script: {
      "name": "Allyson Gillispie",
      "sys_id": "06826bf03710200044e0bfc8bcbe5d8a"
    }
    *** Script: {
      "name": "SOAP Guest",
      "sys_id": "155699460a0a0b2b009e27c10b7f68f6"
    }

    GlideQuery : whereNull (champ de chaîne)

    Renvoie les enregistrements qui contiennent une valeur nulle dans un champ donné.

    Remarque :
    Cette méthode n’est pas précédée des méthodes orWhere(), orWhereNull() ou orWhereNotNull( ).
    Tableau 63. Paramètres
    Nom Type Description
    champ Chaîne Champ utilisé dans la requête.
    Tableau 64. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple montre comment interroger la table Utilisateur et renvoyer des enregistrements dont le prénom ou le nom est nul.

    var query = new global.GlideQuery('sys_user')
       .whereNull('last_name')
       .orWhereNull('first_name')
       .select('first_name', 'last_name')
       .forEach(function (user){
          gs.info(JSON.stringify(user, null, 2));
       });

    Sortie :

    *** Script: {
      "first_name": "ml.admin",
      "last_name": null,
      "sys_id": "88aad6c5c73003005f1b78d48b9763a5"
    }
    *** Script: {
      "first_name": "Sitemap Scheduler User",
      "last_name": null,
      "sys_id": "85388c25b71011104eed4643ae11a993"
    }
    *** Script: {
      "first_name": null,
      "last_name": "Guest",
      "sys_id": "5136503cc611227c0183e96598c4f706"
    }
    *** Script: {
      "first_name": "ml_report.user",
      "last_name": null,
      "sys_id": "b6bad6c5c73003005f1b78d48b97632a"
    }

    GlideQuery : withAcls()

    Exécute la requête à l’aide de l’API GlideRecordSecure pour interroger la base de données en toute sécurité tout en respectant les ACL.

    Tableau 65. Paramètres
    Nom Type Description
    Aucun
    Tableau 66. Renvoie
    Type Description
    GlideQuery Objet de requête en cours de construction.

    Cet exemple montre comment exécuter une requête sécurisée à l’aide d’ACL.

    var users = new global.GlideQuery('sys_user')
        .withAcls()
        .limit(5)
        .orderByDesc('first_name')
        .select('first_name')
        .forEach(function (user){
            gs.info(JSON.stringify(user, null, 2));
        });

    Sortie :

    *** Script: {
      "first_name": "Zane",
      "sys_id": "16826bf03710200044e0bfc8bcbe5dbc"
    }
    *** Script: {
      "first_name": "Zackary",
      "sys_id": "8a826bf03710200044e0bfc8bcbe5d69"
    }
    *** Script: {
      "first_name": "Yvette",
      "sys_id": "4e826bf03710200044e0bfc8bcbe5d57"
    }
    *** Script: {
      "first_name": "Winnie",
      "sys_id": "f682abf03710200044e0bfc8bcbe5d1d"
    }
    *** Script: {
      "first_name": "Wilmer",
      "sys_id": "42826bf03710200044e0bfc8bcbe5d7b"
    }