GlideFilter : dans le champ d’application, global

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 7 minutes de lecture
  • L’API GlideFilter permet de filtrer les requêtes pour déterminer si un ou plusieurs enregistrements répondent à un ensemble spécifié d’exigences.

    Les méthodes de cette API sont accessibles à l’aide de l’objet global GlideFilter.

    Sensibilité à la casse

    L’API GlideFilter est sensible à la casse par défaut. Utilisez la méthode setCaseSensitive() pour activer ou désactiver la sensibilité à la casse. Les requêtes GlideRecord ne sont pas sensibles à la casse.

    L’exemple suivant montre comment une requête GlideRecord n’est pas sensible à la casse et aboutit au même enregistrement utilisateur avec des majuscules ou des minuscules.

    var gr_Query = new GlideRecord('sys_user');
    gr_Query.addQuery('first_name', 'Abel');
    gr_Query.query();
    while (gr_Query.next())
      gs.info("Upper case query: " + gr_Query.getDisplayValue());
    
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.addQuery('first_name', 'abel');
    gr_Query.query();
    while (gr_Query.next())       
      gs.info("Lower case query: " + gr_Query.getDisplayValue());
    La sortie GlideRecord.query() affiche les mêmes résultats indépendamment de la casse.
    Upper case query: Abel Tuter
    Lower case query: Abel Tuter

    L’exemple suivant montre comment GlideFilter récupère uniquement la valeur correspondante de l’enregistrement pour la condition de majuscule. La condition en minuscules ne fournit pas de correspondance.

    // Matches the 'Abel Tuter' user record
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.query();
    var condition = 'first_name=Abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    while (gr_Query.next()) {
       if (glideFilter.match(gr_Query, true))
            gs.info("Upper case condition: " + gr_Query.getDisplayValue());
    }
    
    // The following code does not match 'Abel Tuter' user record
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.query();
    var condition = 'first_name=abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    while (gr_Query.next()) {
       if (glideFilter.match(gr_Query, true))
            gs.info("Lower case condition: " + gr_Query.getDisplayValue());
    }
    La sortie révèle que le filtre ne renvoie que des résultats en majuscules avec une sensibilité à la casse par défaut :
    Upper case condition: Abel Tuter

    L’exemple suivant montre comment désactiver la sensibilité à la casse GlideFilter avec la méthode setCaseSensitive( ). Le filtre correspond à la condition même si le ticket ne correspond pas à la valeur du champ.

    // Matches the 'Abel Tuter' user record
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.query();
    var condition = 'first_name=Abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    while (gr_Query.next()) {
       if (glideFilter.match(gr_Query, true))
         gs.info("Upper case condition: " + gr_Query.getDisplayValue());
    }
    
    // The following code disables case sensitivity and matches the same record
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.query();
    
    var condition = 'first_name=abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    glideFilter.setCaseSensitive(false);
    
    while (gr_Query.next()) {
      if (glideFilter.match(gr_Query, true))
        gs.info("Lower case condition: " + gr_Query.getDisplayValue());
    }
    La sortie révèle des résultats non sensibles à la casse GlideFilter :
    Upper case condition: Abel Tuter
    Lower case condition: Abel Tuter

    Filtrer les valeurs nulles

    Pour exclure les valeurs Null des résultats de la requête GlideFilter , ajoutez ISNOTEMPTY à la condition de requête. L’exemple suivant montre comment l’utilisation de la même requête codée avec GlideRecord et GlideFilter produit des résultats différents.
    var insertRecordsGr = new GlideRecord('u_test_table');
    insertRecordsGr.deleteMultiple();
    var dates = ['', '2021-01-29', '2021-01-30', '2021-01-31'];
    dates.forEach(function(val) {
      insertRecordsGr.initialize();
      insertRecordsGr.u_date_field = val;
      insertRecordsGr.insert();
    });
    
    var now_GR = new GlideRecord('u_test_table');
    now_GR.addEncodedQuery('u_date_field<javascript:gs.beginningOfToday()');
    now_GR.query();
    
    // Encoded query includes null values with GlideFilter, which might cause unexpected results
    var condition = 'u_date_field<javascript:gs.beginningOfToday()';
    
    var grWithGlideFilter = new GlideRecord('u_test_table');
    grWithGlideFilter.query();
    var filter = new GlideFilter(condition, 'filterCondition');
      
    var countWithGlideFilter = 0;
    while (grWithGlideFilter.next()) {
      if (GlideFilter.checkRecord(grWithGlideFilter, condition))
         countWithGlideFilter++;
    }
    
    gs.info('Record RowCount: ' + now_GR.getRowCount() + ' - Filter Count: ' + countWithGlideFilter);
    La sortie montre que GlideRecord retourne trois enregistrements, en ignorant les valeurs de date vides. La requête GlideFilter compte la valeur de date vide et renvoie un nombre de quatre enregistrements.
    Record RowCount: 3 - Filter Count: 4
    Pour exclure les valeurs nulles des résultats GlideFilter , ajoutez une condition ETISNOTEMPTY au champ interrogé.
    // Encoded query includes null values with GlideFilter
    var condition = 'u_date_field<=javascript:gs.beginningOfToday()^u_date_fieldISNOTEMPTY';
    La sortie montre que la requête codée GlideFilter ignore la valeur de date nulle et compte trois résultats.
    Record RowCount: 3 - Filter Count: 3

    GlideFilter : GlideFilter (filtre de chaîne, titre de chaîne)

    Instancie un objet GlideFilter.

    Tableau 1. Paramètres
    Nom Type Description
    filtre Chaîne Chaîne de requête codée au format Glide standard. Voir Chaînes de requête codées. Les résultats sont sensibles à la casse, sauf s’ils sont désactivés à l’aide de la méthode setCaseSensitive( ).

    Pour exclure les valeurs Null des résultats de la requête GlideFilter , ajoutez ISNOTEMPTY à la condition de requête.

    Titre Chaîne Titre descriptif pour le filtre.

    L’exemple suivant montre comment filtrer le nombre d’utilisateurs nommés Rebekah.

    var now_GR = new GlideRecord('sys_user');
    now_GR.query();
    var condition = 'first_name=rebekah';
    var filter = new GlideFilter(condition, 'filterCondition');
    filter.setCaseSensitive(false);
      
    var countResults = 0;
    while (now_GR.next()) {
      if (filter.match(now_GR, true))
         countResults++;
    }
    
    gs.info('Number of users named Rebekah: ' + countResults);
    Sortie :
    Number of users named Rebekah: 2

    GlideFilter : checkRecord(GlideRecord now_GR, filtre de chaîne, correspondance booléenne)

    Compare un filtre spécifié au contenu d’un GlideRecord spécifié.

    Si le filtre spécifié contient une condition, la méthode renvoie la valeur vrai si l’enregistrement remplit la condition.

    Les filtres prennent en charge plusieurs conditions, par exemple « actif=vrai^numéro=abc^catégorie=demande ». Vous pouvez utiliser le match paramètre pour définir si toutes les conditions doivent être remplies pour déterminer une correspondance ou une seule condition.

    Tableau 2. Paramètres
    Nom Type Description
    now_GR GlideRecord GlideRecord à évaluer.
    filtre Chaîne Chaîne de requête codée au format Glide standard. Voir Chaînes de requête codées.

    Pour exclure les valeurs Null des résultats de la requête GlideFilter , ajoutez ISNOTEMPTY à la condition de requête.

    Remarque :
    Les valeurs sont sensibles à la filter casse. De plus, vous ne pouvez pas utiliser setCaseSensitive(false) pour modifier la valeur sensible à la casse.
    correspondre Booléen Facultatif. Marqueur indiquant si toutes les conditions doivent être remplies si le filter paramètre contient plusieurs conditions.

    Valeurs valides :

    • vrai : toutes les conditions doivent être remplies pour que la méthode retourne la valeur vrai.
    • false : une seule des conditions doit être remplie pour que la méthode retourne la valeur vrai.

    Par défaut : true

    Tableau 3. Renvoie
    Type Description
    Booléen Résultats de la comparaison de filtres.
    • vrai : les conditions de filtre ont été remplies.
    • faux : les conditions de filtre n’ont pas été remplies.

    L’exemple suivant montre comment afficher vrai pour chaque enregistrement de la table Incident qui remplit la condition de filtre. Faux sinon.

    var rec = new GlideRecord('incident');
    rec.query();
    
    var bool = true;
     
    while(rec.next())
    {
       bool = GlideFilter.checkRecord(rec, "active=true");
       gs.info("number "+ rec.number + " is " + bool);
    }
    Sortie :
    number INC0000060 is false
    number INC0009002 is false
    number INC0000009 is false
    ...
    number INC0000015 is true
    number INC0000016 is true
    number INC0000017 is true
    ...

    GlideFilter : match(GlideRecord now_GR, correspondance booléenne)

    Évalue un filtre par rapport à un GlideRecord spécifié.

    Tableau 4. Paramètres
    Nom Type Description
    now_GR GlideRecord GlideRecord à évaluer.
    correspondre Booléen

    Marqueur indiquant si toutes les conditions de filtre doivent correspondre.

    Valeurs valides :
    • vrai : toutes les conditions de filtre doivent correspondre.
    • faux : la correspondance des conditions du filtre n’est pas requise.

    Valeur par défaut : false

    Tableau 5. Renvoie
    Type Description
    Booléen Résultats de la vérification du match.
    • vrai : les conditions de filtre ont été remplies.
    • faux : les conditions de filtre n’ont pas été remplies.

    L’exemple suivant montre comment s’assurer que les conditions de filtre correspondent au GlideRecord fourni.

    var now_GR = new GlideRecord('sys_user');
    now_GR.query();
    var condition = 'first_name=rebekah';
    var filter = new GlideFilter(condition, 'filterCondition');
    filter.setCaseSensitive(false);
      
    var countResults = 0;
    while (now_GR.next()) {
      if (filter.match(now_GR, true))
         countResults++;
    }
    
    gs.info('Number of users named Rebekah: ' + countResults);
    Sortie :
    Number of users named Rebekah: 2

    GlideFilter : setCaseSensitive(booléen caseSensitive)

    Active ou désactive les résultats de filtre sensibles à la casse.

    Tableau 6. Paramètres
    Nom Type Description
    caseSensitive Booléen Marqueur indiquant si le filtre est sensible à la casse.
    Valeurs valides :
    • vrai : le filtre est sensible à la casse.
    • false : le filtre n’est pas sensible à la casse.

    Par défaut : true

    Tableau 7. Renvoie
    Type Description
    Aucun

    L’exemple suivant montre comment désactiver les résultats sensibles à la casse.

    var now_GR = new GlideRecord('sys_user');
    now_GR.query();
    
    var condition = 'first_name=rebekah';
    var filter = new GlideFilter(condition, 'filterCondition');
    
    // Disable case-sensitive filtering
    filter.setCaseSensitive(false);
    
    while (now_GR.next()) {
      if (filter.match(now_GR, true))
         gs.info(now_GR.getDisplayValue());
    }

    La sortie montre que le filtre récupère les résultats en majuscules avec une condition en minuscules.

    Rebekah Padley
    Rebekah Lindboe

    GlideFilter : setEnforceSecurity(booléen enforceSecurity)

    Active ou désactive l’évaluation en bac à sable de la chaîne de filtre.

    Tableau 8. Paramètres
    Nom Type Description
    enforceSecurity Booléen

    Marqueur indiquant s’il faut évaluer le filtre dans le bac à sable.

    Valeurs valides :
    • true : évaluer le filtre dans le bac à sable.
    • false : n’évaluez pas le filtre dans le bac à sable.

    Valeur par défaut : false

    Tableau 9. Renvoie
    Type Description
    Aucun

    L’exemple de code suivant montre comment appeler cette méthode.

    var now_GR = new GlideRecord('sys_user');
    now_GR.query();
    var condition = 'first_name=rebekah';
    var filter = new GlideFilter(condition, 'filterCondition');
    filter.setEnforceSecurity(true);
      
    var countResults = 0;
    while (now_GR.next()) {
      if (filter.match(now_GR, true))
         countResults++;
    }
    
    gs.info('Number of users named Rebekah: ' + countResults);
    

    Sortie :

    Number of users named Rebekah: 2