GlideRecord : global
L’API GlideRecord est utilisée pour les opérations de base de données.
L’API GlideRecord est le principal moyen d’interface avec la base de données sur le code côté serveur. Un objet GlideRecord est un objet qui contient les enregistrements d’une seule table. Utilisez l’API pour instancier un objet GlideRecord et ajouter des paramètres de requête, des filtres, des limites et un classement.
Consultez l’article GlideRecord pour plus d’informations sur la création et l’exécution de requêtes.
Pour plus d’informations sur GlideRecordSecure, qui est une classe héritée de GlideRecord qui exécute les mêmes fonctions que GlideRecord et applique également les ACL, consultez les API GlideServer.
Testez toujours les requêtes sur une instance de sous-production avant de les déployer sur une instance de production. Une requête codée mal construite, comme l’inclusion d’un nom de champ non valide, génère une requête non valide. Lorsque la requête non valide est exécutée, la partie non valide de la condition de requête est abandonnée et les résultats sont basés sur la partie valide de la requête, qui peut renvoyer tous les enregistrements de la table. L’utilisation d’une méthode insert(),update(), deleteRecord() ou deleteMultiple() sur des résultats de requête incorrects peut entraîner une perte de données.
Vous pouvez définir la glide.invalid_query.returns_no_rows propriété système sur vrai pour que les requêtes codées non valides ne renvoient aucun enregistrement.
Récupérer les valeurs à partir des enregistrements
Dans la plupart des cas, n’utilisez pas de remontée pas à pas pour obtenir les valeurs d’un enregistrement. La remontée pas à pas récupère l’objet entier au lieu de la valeur du champ. La récupération de l’objet utilise plus d’espace de stockage et peut entraîner des résultats indésirables lorsqu’elle est utilisée dans des tableaux ou dans Portail de services.
Au lieu de récupérer l’objet en entier, vous pouvez utiliser l’une des méthodes suivantes pour copier les valeurs de champ :
var mgr = current.caller_id.manager.toString();GlideRecord : addActiveQuery()
Ajoute un filtre pour renvoyer les enregistrements actifs.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| GlideQueryCondition | Filtrer pour renvoyer les enregistrements actifs. |
var inc = new GlideRecord('incident');
inc.addActiveQuery();
inc.query();
Équivalent dans le champ d’application
Pour utiliser la méthode addActiveQuery() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : addActiveQuery().
GlideRecord : addDomainQuery(Object glideRecord)
Modifie le domaine utilisé pour la requête du domaine de l’utilisateur au domaine du GlideRecord fourni.
Testez toujours les requêtes sur une instance de sous-production avant de les déployer sur une instance de production. Une requête codée mal construite, comme l’inclusion d’un nom de champ non valide, génère une requête non valide. Lorsque la requête non valide est exécutée, la partie non valide de la condition de requête est abandonnée et les résultats sont basés sur la partie valide de la requête, qui peut renvoyer tous les enregistrements de la table. L’utilisation d’une méthode insert(),update(), deleteRecord() ou deleteMultiple() sur des résultats de requête incorrects peut entraîner une perte de données.
Vous pouvez définir la glide.invalid_query.returns_no_rows propriété système sur vrai pour que les requêtes codées non valides ne renvoient aucun enregistrement.
Cette fonction nécessite le module d’extension Domain Support - Domain Extensions Installer (com.glide.domain.msp_extensions.installer).
| Nom | Type | Description |
|---|---|---|
| glideRecord | Objet | GlideRecord à partir duquel obtenir le domaine. |
| Type | Description |
|---|---|
| nul |
//This example requires the Domain plugin be active, the Group table is the specified
//Domain table, and the ITIL user is in the Database Atlanta domain
//From any domain (using queryNoDomain()) look up the incidents that an ITIL user can only see
//who is in the Database Atlanta domain, should expect all incidents with the global or the
//Database Atlanta domain specified.
var domain = new GlideRecord('sys_user');
domain.addQuery('user_name', 'itil');
domain.queryNoDomain();
if (domain.next()) {
var domainQuery = new GlideRecord('incident');
domainQuery.addQuery('active', true);
domainQuery.addDomainQuery(domain);
domainQuery.query();
gs.print('Number of Incidents for ITIL user: ' + domainQuery.getRowCount());
while (domainQuery.next())
gs.print(domainQuery.number);
}
Équivalent dans le champ d’application
Cette méthode n’est pas disponible dans les applications incluses dans le périmètre.
GlideRecord : addEncodedQuery(Requête de chaîne)
Ajoute une requête codée à d’autres requêtes qui ont peut-être été définies.
Testez toujours les requêtes sur une instance de sous-production avant de les déployer sur une instance de production. Une requête codée mal construite, comme l’inclusion d’un nom de champ non valide, génère une requête non valide. Lorsque la requête non valide est exécutée, la partie non valide de la condition de requête est abandonnée et les résultats sont basés sur la partie valide de la requête, qui peut renvoyer tous les enregistrements de la table. L’utilisation d’une méthode insert(),update(), deleteRecord() ou deleteMultiple() sur des résultats de requête incorrects peut entraîner une perte de données.
Vous pouvez définir la glide.invalid_query.returns_no_rows propriété système sur vrai pour que les requêtes codées non valides ne renvoient aucun enregistrement.
| Nom | Type | Description |
|---|---|---|
| query | Chaîne | Chaîne de requête codée. |
| Type | Description |
|---|---|
| nul |
var queryString = "priority=1^ORpriority=2";
var now_GR = new GlideRecord('incident');
now_GR.addEncodedQuery(queryString);
now_GR.query();
while (now_GR.next()) {
gs.addInfoMessage(now_GR.number);
}
Équivalent dans le champ d’application
Pour utiliser la méthode addEncodedQuery() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : addEncodedQuery().
GlideRecord : addExtraField(String dotWalkedField)
Interroge un ou plusieurs champs de type « remontée pas à pas » à partir d’un formulaire ou d’un script dans une seule demande.
La méthode addExtraField() vous permet d’interroger des champs de type « remontée pas à pas » dans une seule requête de base de données, plutôt que d’effectuer plusieurs requêtes par élément de remontée pas à pas dans un formulaire ou un script (ce qui nécessite plusieurs allers-retours vers la base de données).
| Nom | Type | Description |
|---|---|---|
| dotWalkedField (en anglais seulement) | Chaîne | Nom du champ de remontée pas à pas. Les niveaux des noms de champs sont séparés par des points (points). Par exemple, saisissez la valeur Appelant.Société si vous souhaitez interroger le dans la table Incident [incident].Le format suit dotWalkedField l’ordre des champs de gauche à droite dans un formulaire ou un script parcourable par points. |
| Type | Description |
|---|---|
| Néant | Remarque : La méthode addExtraField() n’a pas d’impact sur les résultats de sortie ; Le résultat est toujours le même, que vous utilisiez ou non cette méthode dans votre script. |
var gliderecord = new GlideRecord("incident");
gliderecord.addQuery("number", "INC0041457");
gliderecord.addExtraField("cmdb_ci.location.contact.name");
gliderecory.query();
gliderecord.next();
gs.print(gliderecord.cmdb_ci.location.contact.name);
La sortie est la même que gs.print(gr.cmdb_ci.location.contact.name) sans utiliser addExtraField(). La méthode addExtraField() optimise l’interrogation des champs de type « remontée pas à pas ». Exemple de sortie :
Abel Tuter
GlideRecord : addFunction(fonction d’objet)
Applique un objet GlideDBFunctionBuilder prédéfini à un enregistrement.
Utilisez la classe incluse dans le périmètre GlideDBFunctionBuilder pour définir une fonction. Une fois la fonction définie, utilisez la méthode addFunction(Object function) pour appliquer la fonction à un enregistrement.
| Nom | Type | Description |
|---|---|---|
| function | Objet | Objet GlideDBFunctionBuilder ou GlideDBCaseStatementBuilder qui définit une opération SQL. |
| Type | Description |
|---|---|
| nul |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
var now_GR = new GlideRecord('incident');
now_GR.addFunction(myAddingFunction);
now_GR.addQuery(myAddingFunction, '<', 5);
now_GR.query();
while(now_GR.next())
gs.log(now_GR.getValue(myAddingFunction));
Sortie :
*** Script: 1
*** Script: 4
*** Script: 3
*** Script: 1
*** Script: 1
*** Script: 2
*** Script: 1
*** Script: 1
GlideRecord : addInactiveQuery()
Ajoute un filtre pour renvoyer les enregistrements inactifs. Le marqueur actif des enregistrements inactifs est défini sur faux.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| GlideQueryCondition | Enregistrements où le marqueur actif est faux. |
var inc = new GlideRecord('incident');
inc.addInactiveQuery();
inc.query();
Équivalent dans le champ d’application
Dans les applications incluses dans le périmètre, utilisez la méthode incluse dans le périmètre addQuery(« active »,"false »).
GlideRecord : addJoinQuery(table de chaînes)
Ajoute un filtre pour renvoyer les enregistrements basés sur une relation dans une table connexe.
Par exemple, recherchez tous les utilisateurs qui se trouvent dans le groupe de base de données (utilisateurs via sys_user_grmember table). Un autre exemple serait de rechercher tous les problèmes qui ont un incident affecté (problèmes via la relation incident.problem_id).
Il ne s’agit pas d’une véritable jointure de base de données ; à la place, addJoinQuery() ajoute une sous-requête. Ainsi, bien que le jeu de résultats soit limité en fonction de la jointure, les seuls champs auxquels vous avez accès sont ceux de la table de base (ceux qui se trouvent dans la table avec laquelle le GlideRecord a été initialisé).
Testez toujours les requêtes sur une instance de sous-production avant de les déployer sur une instance de production. Une requête codée mal construite, comme l’inclusion d’un nom de champ non valide, génère une requête non valide. Lorsque la requête non valide est exécutée, la partie non valide de la condition de requête est abandonnée et les résultats sont basés sur la partie valide de la requête, qui peut renvoyer tous les enregistrements de la table. L’utilisation d’une méthode insert(),update(), deleteRecord() ou deleteMultiple() sur des résultats de requête incorrects peut entraîner une perte de données.
Vous pouvez définir la glide.invalid_query.returns_no_rows propriété système sur vrai pour que les requêtes codées non valides ne renvoient aucun enregistrement.
| Nom | Type | Description |
|---|---|---|
| table | Chaîne | Nom de la table |
| Type | Description |
|---|---|
| GlideQueryCondition | Enregistrements dans lesquels les relations correspondent. |
Recherchez les problèmes associés à un incident. Cet exemple renvoie des problèmes auxquels des incidents sont associés. Toutefois, elle n’extrait pas les valeurs des incidents qui sont renvoyés dans le cadre de la requête.
var prob = new GlideRecord('problem');
prob.addJoinQuery('incident');
prob.query();
Recherchez les problèmes active=false avec les incidents associés.
// Look for Problem records
var now_GR = new GlideRecord('problem');
// That have associated Incident records
var grSQ = now_GR.addJoinQuery('incident');
// Where the Problem records are "active=false"
now_GR.addQuery('active', 'false');
// And the Incident records are "active=true"
grSQ.addCondition('active', 'true');
// Query
now_GR.query();
// Iterate and print results
while (now_GR.next()) {
gs.print(now_GR.getValue('number'));
}
Équivalent dans le champ d’application
Pour utiliser la méthode addJoinQuery() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : addJoinQuery().
GlideRecord – addJoinQuery(String table, String primaryField)
Ajoute un filtre pour renvoyer les enregistrements basés sur une relation dans une table connexe.
Par exemple, recherchez tous les utilisateurs qui se trouvent dans le groupe de base de données (utilisateurs via sys_user_grmember table). Un autre exemple serait de rechercher tous les problèmes qui ont un incident affecté (problèmes via la relation incident.problem_id).
Il ne s’agit pas d’une véritable jointure de base de données ; à la place, addJoinQuery() ajoute une sous-requête. Ainsi, bien que le jeu de résultats soit limité en fonction de la jointure, les seuls champs auxquels vous avez accès sont ceux de la table de base (ceux qui se trouvent dans la table avec laquelle le GlideRecord a été initialisé).
Testez toujours les requêtes sur une instance de sous-production avant de les déployer sur une instance de production. Une requête codée mal construite, comme l’inclusion d’un nom de champ non valide, génère une requête non valide. Lorsque la requête non valide est exécutée, la partie non valide de la condition de requête est abandonnée et les résultats sont basés sur la partie valide de la requête, qui peut renvoyer tous les enregistrements de la table. L’utilisation d’une méthode insert(),update(), deleteRecord() ou deleteMultiple() sur des résultats de requête incorrects peut entraîner une perte de données.
Vous pouvez définir la glide.invalid_query.returns_no_rows propriété système sur vrai pour que les requêtes codées non valides ne renvoient aucun enregistrement.
| Nom | Type | Description |
|---|---|---|
| table | Chaîne | Nom de la table |
| champ primaire | Chaîne | S’il est différent de sys_id, le champ primaire. |
| Type | Description |
|---|---|
| GlideQueryCondition | Enregistrements dans lesquels les relations correspondent. |
Recherchez les problèmes présentant des incidents à l’aide du champ open_by de la clé de jointure au lieu du sys_id.
var now_GR = new GlideRecord('problem');
now_GR.addJoinQuery('incident', 'opened_by');
now_GR.query();
Équivalent dans le champ d’application
Pour utiliser la méthode addJoinQuery() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : addJoinQuery().
GlideRecord – addJoinQuery(String table, String primaryField, String joinTableField)
Ajoute un filtre pour renvoyer les enregistrements basés sur une relation dans une table connexe.
Par exemple, recherchez tous les utilisateurs qui se trouvent dans le groupe de base de données (utilisateurs via sys_user_grmember table). Un autre exemple serait de rechercher tous les problèmes qui ont un incident affecté (problèmes via la relation incident.problem_id).
Il ne s’agit pas d’une véritable jointure de base de données ; à la place, addJoinQuery() ajoute une sous-requête. Ainsi, bien que le jeu de résultats soit limité en fonction de la jointure, les seuls champs auxquels vous avez accès sont ceux de la table de base (ceux qui se trouvent dans la table avec laquelle le GlideRecord a été initialisé).
Testez toujours les requêtes sur une instance de sous-production avant de les déployer sur une instance de production. Une requête codée mal construite, comme l’inclusion d’un nom de champ non valide, génère une requête non valide. Lorsque la requête non valide est exécutée, la partie non valide de la condition de requête est abandonnée et les résultats sont basés sur la partie valide de la requête, qui peut renvoyer tous les enregistrements de la table. L’utilisation d’une méthode insert(),update(), deleteRecord() ou deleteMultiple() sur des résultats de requête incorrects peut entraîner une perte de données.
Vous pouvez définir la glide.invalid_query.returns_no_rows propriété système sur vrai pour que les requêtes codées non valides ne renvoient aucun enregistrement.
| Nom | Type | Description |
|---|---|---|
| table | Chaîne | Nom de la table |
| champ primaire | Chaîne | S’il est différent de sys_id, le champ primaire. |
| joinTableField | Chaîne | Si autre que sys_id, champ joignant les tables |
| Type | Description |
|---|---|
| GlideQueryCondition | Enregistrements dans lesquels les relations correspondent. |
Recherchez les problèmes auxquels des incidents sont associés lorsque la valeur du champ caller_id incident correspond à celle du champ de opened_by problème.
var now_GR = new GlideRecord('problem');
now_GR.addJoinQuery('incident', 'opened_by', 'caller_id');
now_GR.query();
Équivalent dans le champ d’application
Pour utiliser la méthode addJoinQuery() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : addJoinQuery().
GlideRecord : addNotNullQuery(String fieldName)
Ajoute un filtre pour renvoyer les enregistrements où le champ spécifié n’est pas nul.
| Nom | Type | Description |
|---|---|---|
| Fieldname | Chaîne | Le nom du champ. |
| Type | Description |
|---|---|
| GlideQueryCondition | GlideQueryCondition des enregistrements où le champ de paramètre n’est pas nul. |
var target = new GlideRecord('incident');
target.addNotNullQuery('short_description');
target.query(); // Issue the query to the database to get all records
while (target.next()) {
// add code here to process the incident record
}
Équivalent dans le champ d’application
Pour utiliser la méthode addNotNullQuery() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : addNotNullQuery().
GlideRecord : addNullQuery(String fieldName)
Ajoute un filtre pour renvoyer les enregistrements dans lesquels le champ spécifié est nul.
| Nom | Type | Description |
|---|---|---|
| Fieldname | Chaîne | Le nom du champ. |
| Type | Description |
|---|---|
| GlideQueryCondition | GlideQueryCondition des enregistrements où le champ spécifié est nul. |
var target = new GlideRecord('incident');
target.addNullQuery('short_description');
target.query(); // Issue the query to the database to get all records
while (target.next()) {
// add code here to process the incident record
}
Équivalent dans le champ d’application
Pour utiliser la méthode addNullQuery() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : addNullQuery().
GlideRecord – addQuery(nom de chaîne, opérateur d’objet, valeur de l’objet)
Possibilité de créer une demande qui, lorsqu’elle est exécutée, renvoie les lignes de la table spécifiée qui correspondent à la demande.
Si vous êtes familier avec SQL, cette méthode est similaire à la clause « where ». Un ou plusieurs appels addQuery() peuvent être effectués dans une seule requête ; pour cette méthode, les requêtes sont AND’ed. Si l’une des instructions de requête doit être OU, utilisez la classe GlideQueryCondition.
addQuery() est généralement appelée avec trois paramètres ; Champ de table, opérateur et valeur de comparaison. Elle ne peut être appelée qu’avec deux paramètres, champ de table et valeur de comparaison, tels que myObj.addQuery('category','Hardware') ;. Dans ce cas, l’opérateur est supposé être « égal à ».
Pour plus d’informations sur l’utilisation des requêtes, consultez Interrogation de tables dans un script.
Testez toujours les requêtes sur une instance de sous-production avant de les déployer sur une instance de production. Une requête codée mal construite, comme l’inclusion d’un nom de champ non valide, génère une requête non valide. Lorsque la requête non valide est exécutée, la partie non valide de la condition de requête est abandonnée et les résultats sont basés sur la partie valide de la requête, qui peut renvoyer tous les enregistrements de la table. L’utilisation d’une méthode insert(),update(), deleteRecord() ou deleteMultiple() sur des résultats de requête incorrects peut entraîner une perte de données.
Vous pouvez définir la glide.invalid_query.returns_no_rows propriété système sur vrai pour que les requêtes codées non valides ne renvoient aucun enregistrement.
| Nom | Type | Description |
|---|---|---|
| nom | Chaîne | Nom du champ de table |
| opérateur | Objet | Opérateur de requête. Les valeurs disponibles dépendent du type de données du paramètre de valeur . Numéros:
Chaînes (doit être en majuscules) :
Remarque : Utilisez CONTAINS au lieu de l’opérateur LIKE. |
| valide | Objet | Valeur à interroger (insensible à la casse). |
| Type | Description |
|---|---|
| GlideQueryCondition | Référence à la GlideQueryCondition qui a été ajoutée au GlideRecord. |
var rec = new GlideRecord('incident');
rec.addQuery('active',true);
rec.addQuery('sys_created_on', ">", "2010-01-19 04:05:00");
rec.query();
while (rec.next()) {
rec.active = false;
gs.print('Active incident ' + rec.number + ' closed');
rec.update();
}
Utilisation de l’opérateur IN.
var que = new GlideRecord('incident');
que.addQuery('number','IN','INC00001,INC00002');
que.query();
while(que.next()) {
//do something....
}
Équivalent dans le champ d’application
Pour utiliser la méthode addQuery() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : addQuery().
GlideRecord : addValue(champ de chaîne, valeur de nombre)
Fournit des opérations atomiques d’addition et de soustraction sur un champ de nombre spécifié au niveau de la base de données pour l’objet GlideRecord actuel.
En règle générale, un objet GlideRecord est écrit sous la forme d’un enregistrement dans une base de données. Les valeurs de champ individuelles sont stockées telles qu’elles ont été définies. Pour le code qui ajoute une valeur à un champ GlideRecord, il enregistre simplement le champ dans la base de données avec la nouvelle valeur, plutôt que de l’incrémenter atomiquement.
gs.print(now_now_GR.u_count); // "1"
now_GR.u_count += 1;
now_GR.update();
now_GR.get(now_now_GR.sys_id);
gs.print(now_now_GR.u_count); // "2" Si un autre utilisateur exécute simultanément le même code, au lieu que les deux opérations ajoutent chacune 1 à u_count, l’effet net est que u_count n’en contient que 2, la mise à jour d’une opération étant en fait perdue.gs.print(now_now_GR.u_count); // "1"
now_GR.addValue("u_count", 1);
now_GR.update();
now_GR.get(now_GR); // The record must be reloaded from the database to observe the result
gs.print(now_now_GR.u_count); // "3", if executed concurrently with another user Comme setValue(), les modifications de addValue() ne prennent effet dans la base de données qu’après un appel ultérieur à update() ou insert(). Si insert() est appelé, le champ spécifié est initialisé avec le value paramètre passé dans addValue().
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Nom du champ dans ce GlideRecord à modifier. Si le champ associé n’est pas de type numérique, l’opération est ignorée. |
| valide | Numéro | Montant à ajouter à la valeur lorsque l’enregistrement est enregistré. Pour effectuer une opération de soustraction, il suffit de passer une valeur négative. |
| Type | Description |
|---|---|
| nul |
Affiche une valeur ajoutée.
gs.print(now_GR.u_count); // "1"
now_GR.addValue("u_count", 1);
now_GR.update();
now_GR.get(now_GR.sys_id); // The record must be reloaded from the database to observe the result
gs.print(now_GR.u_count);
Sortie : 2
Affiche une valeur soustraite.
gs.print(now_GR.u_count); // "4"
now_GR.addValue("u_count", -1);
now_GR.update();
now_GR.get(now_GR.sys_id); // The record must be reloaded from the database to observe the result
gs.print(now_GR.u_count);
Sortie : 3
GlideRecord : applyEncodedQuery(String queryString)
Définit les valeurs des termes de requête codés spécifiés et les applique au GlideRecord actuel.
| Nom | Type | Description |
|---|---|---|
| Querystring | Chaîne | Requête codée à appliquer au GlideRecord actuel. |
| Type | Description |
|---|---|
| Néant |
function createAcl(table, role) {
gs.print("Checking security on table " + table);
var now_GR = new GlideRecord("sys_security_acl");
now_GR.addQuery("name", table);
now_GR.addQuery("operation", "read");
now_GR.query();
var encQuery = now_GR.getEncodedQuery();
if (now_GR.next()) {
// existing acl found so use it
createAclRole(now_GR.sys_id.toString(), role);
return;
} else {
now_GR.initialize();
now_GR.applyEncodedQuery(encQuery);
var acl = now_GR.insert();
gs.print("Added read access control on " + table);
createAclRole(acl, role);
}
}
GlideRecord : applyTemplate(modèle de chaîne)
Appliquez un enregistrement de modèle à partir de la table de modèles [sys_template] à l’enregistrement actuel. Si le modèle spécifié est introuvable, aucune action n’est effectuée.
| Nom | Type | Description |
|---|---|---|
| modèle | Chaîne | Nom d’un modèle issu de la table Modèles [sys_template]. |
| Type | Description |
|---|---|
| nul |
var rec1 = new GlideRecord("incident");
rec1.initialize();
rec1.applyTemplate("my_incident_template");
rec1.insert();
GlideRecord : autoSysFields(booléen e)
Active ou désactive la mise à jour des champs sys_updated_by, sys_updated_on, sys_mod_count, sys_created_by et sys_created_on. Cela permet souvent de mettre à jour manuellement les valeurs de champ d’un enregistrement tout en laissant les informations historiques inchangées.
| Nom | Type | Description |
|---|---|---|
| E | Booléen | Si la valeur est faux, les mises à jour vers sys_updated_by, sys_updated_on, sys_mod_count, sys_created_by et sys_created_on sont désactivées. |
| Type | Description |
|---|---|
| nul |
var inc = new GlideRecord('incident');
// Change all Open(1) incidents to Active(2)
inc.addQuery('state', 1);
inc.query();
while (inc.next()) {
inc.autoSysFields(false); // Do not update sys_updated_by, sys_updated_on, sys_mod_count, sys_created_by, and sys_created_on
inc.setWorkflow(false); // Do not run any other business rules
inc.setValue('state', 2);
inc.update();
}
GlideRecord : canCreate()
Détermine si les règles de contrôle d’accès (qui incluent le rôle de l’utilisateur) autorisent l’insertion de nouveaux enregistrements dans cette table.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant si les rôles de l’utilisateur autorisent la création d’enregistrements dans cette table. Valeurs possibles :
|
Cet exemple montre s’il est possible de créer des enregistrements dans la table benefit_plan.
canCreateBenefitPlan : function() {
var now_GR = new GlideRecord('benefit_plan');
return now_GR.canCreate();
}
Équivalent dans le champ d’application
Pour utiliser la méthode canCreate() dans une application incluse dans le périmètre, utilisez la méthode correspondante dans le périmètre : canCreate().
GlideRecord : canDelete()
Détermine si les règles de contrôle d’accès (qui incluent le rôle de l’utilisateur) autorisent la suppression des enregistrements de cette table.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant si les rôles de l’utilisateur autorisent la suppression d’enregistrements dans cette table. Valeurs valides :
|
var att = new GlideRecord('sys_attachment');
att.get('$[sys_attachment.sys_id]');
var sm = GlideSecurityManager.get();
var checkMe = 'record/sys_attachment/delete';
var canDelete = sm.hasRightsTo(checkMe, att);
gs.log('canDelete: ' + canDelete);
Équivalent dans le champ d’application
Pour utiliser la méthode canDelete() dans une application incluse dans le périmètre, utilisez la méthode correspondante dans le périmètre : canDelete().
GlideRecord : canRead()
Détermine si les règles de contrôle d’accès (ACL) autorisent la lecture des enregistrements dans cette table. Cette méthode évalue tous les types d’ACL, tels que les rôles d’utilisateur, les ACL scriptées, les ACL avec des conditions scriptées, etc.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant si les rôles de l’utilisateur autorisent la lecture des enregistrements de cette table. Valeurs valides :
|
Cet exemple montre si les enregistrements peuvent être lus à partir de la table benefit_plan.
canReadBenefitPlan: function() {
var now_GR = new GlideRecord('benefit_plan');
return now_GR.canRead();
}
Équivalent dans le champ d’application
Pour utiliser la méthode canRead() dans une application incluse dans le périmètre, utilisez la méthode correspondante dans le périmètre : canRead().
GlideRecord : canWrite()
Détermine si les règles de contrôle d’accès (qui incluent le rôle de l’utilisateur) autorisent les mises à jour des enregistrements de cette table.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant si les rôles de l’utilisateur autorisent l’écriture d’enregistrements dans cette table. Valeurs valides :
|
Cet exemple montre si des enregistrements peuvent être écrits dans la table de benefit_plan.
canWriteBenefitPlan : function() {
var now_GR = new GlideRecord('benefit_plan');
return now_GR.canWrite();
}
Équivalent dans le champ d’application
Pour utiliser la méthode canWrite() dans une application incluse dans le périmètre, utilisez la méthode correspondante dans le périmètre : canWrite().
GlideRecord - changes()
Détermine si l’un des champs de l’enregistrement a changé.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant s’il y a des changements dans l’enregistrement spécifié. Valeurs possibles :
|
Cet exemple montre comment vérifier s’il y a des changements dans un enregistrement d’incident.
var now_GR = new GlideRecord("incident");
now_GR.query();
now_GR.next();
if (now_GR.changes()) {
gs.print("The incident record reported changes right after being read");
} else {
gs.print("The incident record has not changed");
}
Équivalent dans le champ d’application
Pour implémenter cette fonctionnalité dans une application incluse dans le périmètre, ajoutez un code similaire au suivant :
var now_GR = new GlideRecord("incident");
now_GR.get("965c9e5347c12200e0ef563dbb9a7156");
now_GR.short_description = "test";
var elements = now_GR.getElements();
var hasChanged = false;
for(var i=0; i < elements.length;i++){
var element = elements[i];
hasChanged = hasChanged || element.changes();
gs.info(element.getName() + ":" + element.changes());
}
gs.info(hasChanged);
GlideRecord : deleteMultiple()
Supprime tous les enregistrements qui répondent à la requête.
Cette méthode ne supprime pas les pièces jointes.
La remontée pas à pas n’est pas prise en charge pour cette méthode. Lors de l’utilisation de la fonction deleteMultiple() sur les tables référencées, tous les enregistrements de la table sont supprimés. De plus, lors de l’utilisation de deleteRecord() pour la suppression en cascade, les appels antérieurs à setWorkflow() sur le même objet GlideRecord sont ignorés.
N’utilisez pas deleteMultiple() sur les tables avec des champs de devise. Supprimez toujours chaque enregistrement individuellement. De plus, n’utilisez pas cette méthode avec les méthodes chooseWindow() ou setLimit() lorsque vous travaillez avec des tables volumineuses. La méthode setLimit() ne limite pas le nombre d’enregistrements supprimés avec deleteMultiple(). Tous les enregistrements renvoyés par la requête sont supprimés indépendamment de setLimit().
La glide.db.forced.chunk.threshold propriété système définit le seuil au-dessus duquel les enregistrements de blocs sont supprimés et mis à jour. Le découpage en bloc permet d’éviter que des suppressions de clés non primaires sur des tables volumineuses n’entraînent des problèmes de réplication. Pour plus d'informations, consultez Available system properties.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Néant |
Cet exemple montre comment supprimer tous les enregistrements inactifs de la table Incident.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('active','false');
now_GR.query();
now_GR.deleteMultiple();
Équivalent dans le champ d’application
Pour utiliser la méthode deleteMultiple() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : deleteMultiple().
GlideRecord : deleteRecord()
Supprime un seul enregistrement.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Marqueur qui indique si l’enregistrement a été correctement supprimé. Valeurs possibles :
|
Cet exemple montre comment supprimer tous les enregistrements inactifs de la table Incident.
var rec = new GlideRecord('incident');
rec.addQuery('active',false);
rec.query();
while (rec.next()) {
gs.info('Inactive incident ' + rec.number + ' deleted');
rec.deleteRecord();
}
Sortie :
Inactive incident INC0010010 deleted
Inactive incident INC0010011 deleted
Cet exemple montre comment supprimer un enregistrement de la table Incident immédiatement après son insertion. L’incident GlideRecord doit être rechargé après l’insertion avant de pouvoir être supprimé.
var grTicket = new GlideRecord('incident');
grTicket.initialize();
grTicket.short_description = 'Example ticket';
grTicket.work_notes = 'An update about the ticket';
var ins_sys_id = grTicket.insert(); // Insert the record
grTicket.get(ins_sys_id); // Reload the inserted record
gs.info(grTicket.deleteRecord()); // Delete the record
Sortie :
true
Équivalent dans le champ d’application
Pour utiliser la méthode deleteRecord() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : deleteRecord().
GlideRecord : find(String columnName, String value)
Renvoie la valeur true si un enregistrement a une valeur correspondante dans la colonne spécifiée. S’il est trouvé, il se déplace également vers le premier enregistrement qui correspond, exécutant essentiellement next() jusqu’à ce que l’enregistrement soit retourné.
| Nom | Type | Description |
|---|---|---|
| columnName | Chaîne | Nom de champ à rechercher. |
| valide | Chaîne | Valeur à vérifier dans le champ spécifié. |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant si un enregistrement dans la table actuelle a une valeur correspondante dans le champ spécifié. Valeurs possibles :
|
Cet exemple montre comment trouver un enregistrement dans la table Incident avec « Critique » dans le champ de brève description.
var now_GR = new GlideRecord("incident");
now_GR.query();
var shortDescription = "Critical";
if (now_GR.find("short_description", shortDescription)) {
gs.print("An incident with the specified field value was found");
var recordID = now_GR.getValue("sys_id");
gs.print("Found in the following record: " + recordID);
} else {
gs.print("An incident with the specified field value was not found");
}
Sortie
An incident with the specified field value was found
Found in the following record: 552c48888c033300964f4932b03eb092
GlideRecord : get(Nom de l’objet, Valeur de l’objet)
Renvoie l’enregistrement spécifié dans l’objet GlideRecord actuel.
Cette méthode accepte un ou deux paramètres. Si un seul paramètre est transmis, la méthode suppose qu’il s’agit du sys_id de l’enregistrement souhaité. S’il ne le trouve pas, il essaie alors de faire correspondre la valeur à la valeur d’affichage. Si deux paramètres sont transmis, le premier est le nom de la colonne dans le GlideRecord à rechercher. La seconde est la valeur à rechercher.
Si plusieurs enregistrements sont trouvés, utilisez next() pour accéder aux enregistrements supplémentaires.
| Nom | Type | Description |
|---|---|---|
| nom | Objet | Facultatif. Nom de la colonne GlideRecord instanciée pour rechercher le paramètre spécifié value . Si un seul paramètre est transmis, la méthode suppose que ce paramètre est sys_id. |
| valide | Objet | Valeur à faire correspondre. |
| Type | Description |
|---|---|
| Booléen | Indique si l’enregistrement demandé a été localisé. Valeurs possibles :
|
Cet exemple permet d’obtenir un enregistrement d’incident en transmettant le sys_id.
var grIncident = new GlideRecord('incident');
var returnValue = grIncident.get('99ebb4156fa831005be8883e6b3ee4b9');
gs.info(returnValue); // logs true or false
gs.info(grIncident.number); // logs Incident Number
Cet exemple obtient un enregistrement d’incident en transmettant la colonne de l’enregistrement à rechercher et la valeur à rechercher.
var grIncident = new GlideRecord('incident');
var returnValue = grIncident.get('caller_id.name','Sylivia Wayland');
gs.info(returnValue); // logs true or false
gs.info(grIncident.number); // logs Incident Number
Équivalent dans le champ d’application
Pour utiliser la méthode get() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : get().
GlideRecord : getAttribute(String fieldName)
Renvoie les attributs de dictionnaire sur le champ spécifié.
| Nom | Type | Description |
|---|---|---|
| Fieldname | Chaîne | Nom de champ pour lequel renvoyer les attributs de dictionnaire |
| Type | Description |
|---|---|
| Chaîne | Attributs du dictionnaire |
Cet exemple montre comment renvoyer les attributs de dictionnaire pour « tree_picker ».
function doit() {
var now_GR = new GlideRecord('sys_user');
now_GR.query("user_name","admin");
if (now_GR.next()) {
gs.print("we got one");
gs.print(now_GR.location.getAttribute("tree_picker"));
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode getAttribute() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getAttribute().
GlideRecord : getClassDisplayValue()
Renvoie l’étiquette de la table.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Étiquette qui identifie la table. |
Cet exemple imprime l’étiquette de la table transmise.
// Display the incident table label
var now_GR = new GlideRecord("incident");
var value = now_GR.getClassDisplayValue();
gs.info("The table label is " + value + ".");
Sortie :
The table label is Incident.
Équivalent dans le champ d’application
Pour utiliser la méthode getClassDisplayValue() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getClassDisplayValue().
GlideRecord : getDisplayValue()
Récupère la valeur d’affichage de l’enregistrement actuel.
Les valeurs d'affichage sont manipulées en fonction de la valeur réelle dans la base de données, ainsi que des paramètres et préférences système ou utilisateur.
- Champs de choix : la valeur de base de données peut être un nombre, mais la valeur d'affichage sera plus descriptive.
- Champs de date : la valeur de base de données est au format UTC, tandis que la valeur d'affichage est basée sur le fuseau horaire de l'utilisateur.
- Texte chiffré : la valeur de base de données est chiffrée, tandis que la valeur d'affichage n'est pas chiffrée en fonction du contexte de chiffrement de l'utilisateur.
- Champs de référence : la valeur de base de données est sys_id, tandis que la valeur d'affichage est un champ d'affichage de l'enregistrement référencé.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Affichez la valeur de l’enregistrement actuel. |
Cet exemple écrit la valeur d’affichage d’un enregistrement d’incident spécifié dans le journal.
var now_GR = new GlideRecord('incident');
now_GR.get('sys_id','<sys_id>');
gs.info(now_GR.getDisplayValue());
Sortie :
INC0000050
Équivalent dans le champ d’application
Pour utiliser la méthode getDisplayValue() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getDisplayValue().
GlideRecord : getED()
Renvoie le descripteur de l’élément.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| GlideElementDescriptor | Descripteur de l’élément. |
Cet exemple montre comment récupérer le champ nom d’un GlideRecord d’incident.
grInc = new GlideRecord('incident');
grInc.getActiveQuery();
grInc.query();
if (grInc.next())
gs.info("Table Descriptor is - " + grInc.getED().getName());
Sortie :
Table Descriptor is - incident
Équivalent dans le champ d’application
Pour utiliser la méthode getED() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getED().
GlideRecord : getElement(String fieldName)
Récupère le GlideElement pour un champ spécifié.
La valeur renvoyée par cette méthode est un objet GlideElement complet. Les résultats sont l’équivalent d’une remontée pas à pas d’une valeur de champ. Par exemple, now_GR.getElement('short_description') fournit le même résultat que nowGR.short_description.
Dans la plupart des cas, n’utilisez pas de remontée pas à pas pour obtenir les valeurs d’un enregistrement. La remontée pas à pas récupère l’objet entier au lieu de la valeur du champ. La récupération de l’objet utilise plus d’espace de stockage et peut entraîner des résultats indésirables lorsqu’elle est utilisée dans des tableaux ou dans Portail de services.
Au lieu de récupérer l’objet en entier, vous pouvez utiliser l’une des méthodes suivantes pour copier les valeurs de champ :
var mgr = current.caller_id.manager.toString();Voir aussi : GlideElement - toString().
| Nom | Type | Description |
|---|---|---|
| Fieldname | Chaîne | Nom de colonne pour lequel renvoyer l’objet GlideElement. |
| Type | Description |
|---|---|
| Élément Glide | GlideElement pour la colonne spécifiée de l’enregistrement actuel. Chaque objet décrit un champ dans le GlideRecord actuel. |
Cet exemple montre comment obtenir l’objet GlideElement pour une table transmise et les comparer avec les valeurs de métadonnées système attendues.
function compareElement(comment, table, element, /*{}*/ expected) {
var now_GR = new GlideRecord(table);
var el = now_GR.getElement(element);
for (var n in expected) {
assertEquals(comment + ":" + table + "." + element, expected[n], el.sys_meta[n]);
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode getElement() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getElement().
GlideRecord : getEncodedQuery()
Récupère la condition de requête du jeu de résultats actuel sous forme de chaîne de requête codée.
Pour plus d’informations, consultez Chaînes de requêtes codées .
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne |
Cet exemple montre comment obtenir la requête codée actuelle à utiliser ultérieurement pour créer un rôle ACL de lecture.
function createAcl(table, role) {
gs.print("Checking security on table " + table);
var now_GR = new GlideRecord("sys_security_acl");
now_GR.addQuery("name", table);
now_GR.addQuery("operation", "read");
now_GR.query();
var encQuery = now_GR.getEncodedQuery();
if (now_GR.next()) {
// existing acl found so use it
createAclRole(now_GR.sys_id.toString(), role);
return;
} else {
now_GR.initialize();
now_GR.applyEncodedQuery(encQuery);
var acl = now_GR.insert();
gs.print(" Added read access control on " + table);
createAclRole(acl, role);
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode getEncodedQuery() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getEncodedQuery().
GlideRecord : getEscapedDisplayValue()
Récupère la valeur de champ pour le champ d’affichage de l’enregistrement actuel et ajoute des caractères d’échappement à utiliser dans les scripts Jelly.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Valeur échappée du champ d’affichage de la table actuelle. |
Cet exemple montre comment obtenir la valeur d’affichage d’échappement user_name à partir de la table Utilisateur [sys_user].
var userName = "Michael J'ones";
var now_GR = new GlideRecord("sys_user");
if (now_GR.get("user_name", userName)) {
gs.print("Deleting existing user=" + userName);
now_GR.deleteRecord();
}
now_GR.initialize();
var name = userName.split(" ", 2);
var firstName = name[0];
var lastName = name[1];
now_GR.setValue("user_name", userName);
gs.print("Name: " + now_GR.getValue("user_name"));
now_GR.setValue("first_name", firstName);
now_GR.setValue("last_name", lastName);
var escapeValue = now_GR.getEscapedDisplayValue();
gs.print("Escaped name: " + escapeValue);
Sortie :
Name: Michael J'ones
Escaped name: Michael J\'ones
GlideRecord : getFields()
Récupère une ArrayList Java des champs de l’enregistrement actuel.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| TableauListe Java | Champs de l’enregistrement actuel |
// This can be run in "Scripts - Background" for demonstration purposes
// Get a single incident record
var grINC = new GlideRecord('incident');
grINC.query();
grINC.next();
gs.print('Using ' + grINC.getValue('number'));
gs.print('');
// getFields() returns a Java ArrayList
var fields = grINC.getFields();
// Enumerate GlideElements in the GlideRecord object that have values
gs.print('Enumerating over all fields with values:');
for (var i = 0; i < fields.size(); i++) {
var glideElement = fields.get(i);
if (glideElement.hasValue()) {
gs.print(' ' + glideElement.getName() + '\t' + glideElement);
}
}
gs.print('');
// Get a specific GlideElement: number
gs.print('Getting the number field:');
for (var i = 0; i < fields.size(); i++) {
var glideElement = fields.get(i);
if (glideElement.hasValue() && glideElement.getName() == 'number') {
gs.print(' ' + glideElement.getName() + '\t' + glideElement);
}
}
GlideRecord : getLabel()
Récupère l’étiquette du champ.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Étiquette du champ |
Cet exemple montre comment récupérer l’étiquette d’un champ de question dans la table Élément demandé et imprimer l’étiquette et son nom d’affichage.
template.print("Summary of Requested items:\n");
var now_GR = new GlideRecord("sc_req_item");
now_GR.addQuery("request", current.sysapproval);
now_GR.query();
while(now_GR.next()) {
var nicePrice = now_GR.price.toString();
if (nicePrice != '') {
nicePrice = parseFloat(nicePrice);
nicePrice = nicePrice.toFixed(2);
}
template.print(now_GR.number + ": " + now_GR.quantity + " X " + now_GR.cat_item.getDisplayValue()
+ " at $" + nicePrice + " each \n");
template.print(" Options:\n");
for (key in now_GR.variables) {
var now_V = now_GR.variables[key];
if(now_V.getGlideObject().getQuestion().getLabel() != '') {
template.space(4);
template.print(' ' + now_V.getGlideObject().getQuestion().getLabel() + " = "
+ vnow_V.getDisplayValue() + "\n");
}
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode getLabel() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getLabel().
GlideRecord : getLink(booléen noStack)
Récupère le lien de l’enregistrement actuel.
| Nom | Type | Description |
|---|---|---|
| noStack (Nœud de pile) | Booléen | Marqueur indiquant s’il faut ajouter le lien généré à la fin de l’URL. Par exemple : &sysparm_stack=[tablename]_list.do ? sysparm_query=active=true.Valeurs valides :
Valeur par défaut : false |
| Type | Description |
|---|---|
| Chaîne | URL de l’enregistrement actuel. |
Cet exemple recherche les pièces jointes et ajoute le lien s’il y en a.
var attachment_link = '';
var rec = new GlideRecord('sc_req_item');
rec.addQuery('sys_id', current.request_item);
rec.query();
if(rec.next()){
if(rec.hasAttachments()){
attachment_link = gs.getProperty('glide.servlet.uri') + rec.getLink();
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode getLink() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getLink().
GlideRecord : getLocation()
Récupère le numéro de ligne de l’enregistrement actuel dans la table.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Numéro | Numéro de ligne de base zéro de l’enregistrement actuel dans la table. |
Cet exemple montre comment vérifier si un enregistrement de la table Incident n’est pas récupéré correctement en comparant le nombre d’enregistrements au numéro d’emplacement d’enregistrement.
var now_GR = new GlideRecord("incident");
now_GR.addQuery("priority", "4");
now_GR.query();
for (x=0; x <4; x++) {
now_GR.next();
gs.print("Location value: " + now_GR.getLocation());
}
Sortie :
Location value: 0
Location value: 1
Location value: 2
Location value: 3
GlideRecord : getPlural()
Récupère l’étiquette pluriel de la table GlideRecord.
Par exemple, si le nom de la table est « Demande de changement », cette méthode renvoie « Demandes de changement ».
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Étiquette pluriel de la table GlideRecord. |
Cet exemple montre les vérifications des valeurs de retour pour getLabel() et getPlural() pour la table Incident.
var now_GR = new GlideRecord('incident');
gs.print(now_GR.getLabel());
if (now_GR.getLabel() != 'Incident')
throw "GlideRecord.getLabel() returned unexpected value for table 'incident': " + now_GR.getLabel();
gs.print(now_GR.getPlural());
if (now_GR.getPlural() != 'Incidents')
throw "GlideRecord.getPlural() returned unexpected value for table 'incident': " + now_GR.getPlural();
"success";
Équivalent dans le champ d’application
Pour utiliser la méthode getPlural() dans une application incluse dans le périmètre, utilisez la méthode GlideRecord.getED() délimitée pour obtenir le descripteur du champ, puis utilisez la méthode GlideElementDescriptor.getPlural() incluse dans le périmètre.
GlideRecord : getRecordClassName()
Récupère le nom de classe (table) de l’enregistrement actuel.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Nom de la classe ou de la table |
function TaskAssignmentFilter() {
var classname = current.getRecordClassName();
var filter = "type=null";
if (classname == "incident" && current.category == "database") {
filter = GetGroupFilter("database");
}
else {
// append exclusion for 'catalog' to the filter
var cat = new GlideRecord("sys_user_group_type");
cat.addQuery("name", "catalog");
cat.query();
if (cat.next()) {
filter += "^ORtype!=" + cat.sys_id;
}
}
gs.log("TaskAssignmentFilter: " + filter);
return filter;
}
Équivalent dans le champ d’application
Pour utiliser la méthode getRecordClassName() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getRecordClassName().
GlideRecord : getRelatedLists()
Récupère une liste de noms et de valeurs d’affichage des listes connexes associées au GlideRecord actuel.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Hashmap | Carte de hachage avec les noms et les valeurs d’affichage des listes connexes. |
Cet exemple montre comment obtenir la liste des noms et afficher les valeurs des listes connexes associées au GlideRecord actuel, les stocker dans un tableau, puis afficher leurs valeurs.
var now_GR = new GlideRecord('incident');
var c = now_GR.getRelatedLists().values().toArray();
var numElements = c.length;
for( var i = 0; i < numElements; ++i){
gs.print(i+": "+c[i]);
}
GlideRecord : getRelatedTables()
Récupère une liste de noms et de valeurs d’affichage des tables auxquelles l’enregistrement actuel fait référence.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Hashmap | Carte de hachage avec les noms et les valeurs d’affichage des tables associées. |
Cet exemple montre comment obtenir la liste des noms et afficher les valeurs des tables liées au GlideRecord actuel, les stocker dans un tableau, puis afficher leurs valeurs.
var now_GR = new GlideRecord('incident');
var c = now_GR.getRelatedTables().values().toArray();
var numElements = c.length;
for( var i = 0; i < numElements; ++i){
gs.print(i+": "+c[i]);
}
GlideRecord : getRowCount()
Récupère le nombre de lignes (enregistrements) dans l’objet GlideRecord actuel.
- Récupération des enregistrements de numéros dans GlideRecord ou GlideAggregate
- Les API getRowCount() et getAggregate() GlideAggregate offrent des informations similaires. Utilisez les critères suivants pour déterminer l’option qui vous convient le mieux.
- La méthode GlideRecord getRowCount() vous indique combien d’enregistrements ont été renvoyés à partir d’une requête ainsi que les enregistrements eux-mêmes. Si vous avez besoin du nombre d’enregistrements dans le jeu de résultats avant ou après l’itération sur l’ensemble pour effectuer des actions sur les enregistrements, utilisez cette méthode.
- La méthode GlideAggregate getAggregate() récupère uniquement un nombre d’enregistrements correspondant à la requête, à l’exclusion des enregistrements réels. L’agrégat doit être défini sur l’objet GlideAggregate avant d’émettre la requête.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Numéro | Nombre de lignes dans le GlideRecord actuel. |
L’exemple suivant montre comment obtenir le nombre d’incidents à partir de la table Incident [incident].
var numberOfIncidents = new GlideRecord('incident');
numberOfIncidents.query();
gs.info("Records in incident table: " + numberOfIncidents.getRowCount());
Sortie :
Records in incident table: 6920
Équivalent dans le champ d’application
Pour utiliser la méthode getRowCount() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getRowCount().
GlideRecord : getRowNumber()
Récupère le numéro de ligne défini par saveLocation() ou setLocation().
Pour obtenir le numéro de ligne actuel, utilisez getLocation().
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Numéro | Numéro de ligne enregistré. |
Cet exemple montre comment enregistrer un emplacement de ligne dans la table Utilisateurs, puis obtenir ce numéro de ligne.
var now_GR = new GlideRecord('sys_user');
now_GR.addQuery();
now_GR.query();
now_GR.saveLocation(5);
var savedRow = now_GR.getRowNumber();
gs.print("Saved row: " + savedRow);
Sortie :
Saved row: 5
GlideRecord : getTableName()
Récupère le nom de table associé à ce GlideRecord.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Un nom de table |
Cet exemple montre comment écrire le nom de la table actuelle dans le journal système.
gs.log('Table: ' + current.getTableName());
gs.log('Parent: ' + current.parent.sys_id);
var item = new GlideRecord('sc_req_item');
item.addQuery('sys_id', current.parent.sys_id);
item.query();
if(item.next()){
for(var variable in item.variable_pool) {
gs.log(variable);
var answer = eval ("item.variable_pool." + variable + ".getDisplayValue()");
gs.log(answer);
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode getTableName() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getTableName().
GlideRecord : getUniqueValue()
Obtient la clé primaire de l’enregistrement, qui est généralement la sys_id, sauf indication contraire.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Clé primaire unique sous forme de chaîne ou null si la clé est nulle. |
var now_GR = new GlideRecord('kb_knowledge');
now_GR.query();
now_GR.next();
var uniqueid = now_GR.getUniqueValue();
gs.info(uniqueid);
GlideRecord : getValue(String fieldName)
Récupère la valeur de chaîne d’un champ spécifié.
| Nom | Type | Description |
|---|---|---|
| Fieldname | Chaîne | Nom d’un champ dont la valeur doit être récupérée. |
| Type | Description |
|---|---|
| Chaîne | Valeur de l’élément spécifié. Renvoie null si le champ est vide ou si le champ n’existe pas. Remarque : Les valeurs booléennes sont renvoyées sous forme de valeurs de chaîne « 0 » et « 1 » au lieu de fausses et vraies. |
Cet exemple utilise la méthode getValue() pour obtenir les valeurs de champ dans deux GlideRecords en cours de comparaison.
function() {
var jobExists = true;
var jobGr;
while(jobExists){
jobGr = new GlideRecord("sys_trigger");
jobExists = jobGr.get("name", "BaselineAPI: Create Baseline Job");
}
var baselineGr = new GlideRecord('pm_project_baseline');
baselineGr.get('baseline_name','Test Project Baseline');
baselineGr.query();
Assert.assertEquals(true, baselineGr.next());
var projectGr = new GlideRecord('pm_project');
projectGr.get(this._project);
Assert.assertEquals(projectGr.getValue('cost'), baselineGr.getValue('cost'));
Assert.assertEquals((projectGr.getValue('capex_cost')), baselineGr.getValue('capex_cost'));
Assert.assertEquals((projectGr.getValue('opex_cost')), baselineGr.getValue('opex_cost'));
Assert.assertEquals((projectGr.getValue('budget_cost')), baselineGr.getValue('budget_cost'));
Assert.assertEquals((projectGr.getValue('value')), baselineGr.getValue('value'));
Assert.assertEquals((projectGr.getValue('npv_value')), baselineGr.getValue('npv_value')); Assert.assertEquals((projectGr.getValue('score')), baselineGr.getValue('score'));
}
Équivalent dans le champ d’application
Pour utiliser la méthode getValue() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getValue().
GlideRecord : GlideRecord(String tableName)
Crée une instance de la classe GlideRecord pour la table spécifiée.
| Nom | Type | Description |
|---|---|---|
| tableName | Chaîne | Table à utiliser. |
var now_GR = new GlideRecord('incident');
GlideRecord : hasAttachments()
Détermine si le GlideRecord actuel comporte des pièces jointes.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Vrai si l’enregistrement actuel contient des pièces jointes, faux dans les autres cas. |
Cet exemple recherche les pièces jointes et crée un lien s’il y en a.
var attachment_link = '';
var rec = new GlideRecord('sc_req_item');
rec.addQuery('sys_id', current.request_item);
rec.query();
if(rec.next()){
if(rec.hasAttachments()){
attachment_link = gs.getProperty('glide.servlet.uri') + rec.getLink();
}
}
GlideRecord : hasNext()
Détermine s’il existe d’autres enregistrements dans le GlideRecord.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Vrai s’il existe d’autres enregistrements dans l’ensemble de requêtes, sinon faux. |
Cet exemple montre comment appeler différentes fonctions en fonction de la présence ou non d’enregistrements supplémentaires dans le GlideRecord actuel.
if (now_GR.hasNext()) {
dothis(); // found it, do it
} else {
dothat(); // didn't find it
};
Équivalent dans le champ d’application
Pour utiliser la méthode hasNext() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : hasNext().
GlideRecord - initialize()
Crée un enregistrement vide dans le GlideRecord actuel qui convient au remplissage avant une insertion.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
Cet exemple initialise un nouvel enregistrement dans la table to_do, crée un enregistrement, puis l’insère dans la table.
var now_GR = new GlideRecord('to_do');
now_GR.initialize();
now_GR.name = 'first to do item';
now_GR.description = 'learn about GlideRecord';
now_GR.insert();
Équivalent dans le champ d’application
Pour utiliser la méthode initialize() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : initialize().
GlideRecord - insert()
Insère un nouvel enregistrement avec les valeurs de champ qui ont été définies pour l’enregistrement actuel.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | sys_id de l’enregistrement inséré ou nul si l’enregistrement n’est pas inséré. |
Cet exemple crée un nouvel enregistrement dans la table to_do, définit des valeurs pour certains champs d’enregistrement, puis insère l’enregistrement dans la table.
var now_GR = new GlideRecord('to_do');
now_GR.initialize();
now_GR.name = 'first to do item';
now_GR.description = 'learn about GlideRecord';
now_GR.insert();
Équivalent dans le champ d’application
Pour utiliser la méthode insert() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : insert().
GlideRecord : insertWithReferences()
Insère un nouvel enregistrement et insère ou met à jour tout enregistrement connexe avec les informations fournies.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | sys_id de l’enregistrement inséré ou nul si l’enregistrement n’a pas été inséré. |
Si aucune valeur de référence n’est spécifiée (comme ci-dessous), un nouvel enregistrement utilisateur est créé avec l’first_name et l’last_name fournis, et la valeur caller_id est définie sur cet enregistrement sys_user nouvellement créé. Il en résulte un nouvel enregistrement de sys_user avec l’first_name et l’last_name fournis, ainsi qu’un nouvel enregistrement d’incident avec l’short_description et l’caller_id fournis.
var inc = new GlideRecord('incident');
inc.initialize();
inc.short_description = 'New incident 1';
inc.caller_id.first_name = 'John';
inc.caller_id.last_name = 'Doe';
inc.insertWithReferences();
Si une valeur caller_id est spécifiée, cette caller_id est mise à jour avec les first_name et les last_name fournis. Il en résulte un enregistrement d’incident nouvellement créé dont les valeurs sont définies pour short_description et caller_id.
var inc = new GlideRecord('incident');
inc.initialize();
inc.short_description = 'New incident 1';
inc.caller_id.setDisplayValue('David Loo');
inc.caller_id.first_name = 'John';
inc.caller_id.last_name = 'Doe';
inc.insertWithReferences();
GlideRecord : instanceOf(String className)
Vérifie une table pour le type\la classe de table.
| Nom | Type | Description |
|---|---|---|
| Classname | Chaîne | Nom d’un type ou d’une classe d’enregistrement. |
| Type | Description |
|---|---|
| Booléen | Vrai si la table est une instance de la classe spécifiée. |
Cet exemple vérifie si le groupe/utilisateur transmis est de type table/classe sys_user.
function(groupOrUser, label, grantedBy) {
var labelCheck;
var labelRecord;
if (typeof label === "string") {
labelRecord = new GlideRecord('label');
labelRecord.addQuery('name', label);
labelRecord.query();
labelRecord.next();
} else {
labelRecord = label;
}
if (groupOrUser.instanceOf('sys_user')) {
labelCheck = new GlideRecord('label_user_m2m');
labelCheck.addQuery('user', groupOrUser.sys_id);
} else {
labelCheck = new GlideRecord('label_group_m2m');
labelCheck.addQuery('group', groupOrUser.sys_id);
}
labelCheck.addQuery('label', labelRecord.sys_id);
if (grantedBy !== "undefined") {
labelCheck.addQuery('granted_by', grantedBy.sys_id);
}
labelCheck.query();
return labelCheck.hasNext();
}
GlideRecord : isNewRecord()
Détermine si l’enregistrement actuel a été inséré dans la base de données.
Cette méthode ne renvoie true que si la méthode newRecord() a été appelée. Cette méthode est utile pour les ACL scriptées et dans la condition des actions d’interface utilisateur, mais ne doit pas être utilisée dans les scripts en arrière-plan.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant si l’enregistrement actuel est nouveau (n’a pas été inséré dans la base de données). Valeurs possibles :
|
Cet exemple vérifie si le nouvel enregistrement a été inséré dans la table de sys_user.
var now_GR = new GlideRecord("sys_user");
now_GR.newRecord();
now_GR.setValue("user_name", "John Smith");
gs.print("Is this a new record: " + now_GR.isNewRecord());
var now_GR2 = new GlideRecord("sys_user");
now_GR2.addQuery("user_name", "Abel Tutor");
now_GR2.query();
now_GR2.next();
gs.print("Is this a new record: " + now_GR2.isNewRecord());
GlideRecord : isValid()
Détermine si la table GlideRecord actuelle existe.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Vrai si la table existe (valide), sinon faux. |
Cet exemple vérifie si la table Incident existe.
var testTable = new GlideRecord('incident');
gs.print(testTable.isValid());
Équivalent dans le champ d’application
Pour utiliser la méthode isValid() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : isValid().
GlideRecord : isValidField(String fieldName)
Détermine si le champ spécifié est défini dans la table GlideRecord actuelle.
| Nom | Type | Description |
|---|---|---|
| Fieldname | Chaîne | Nom d’un champ à vérifier. |
| Type | Description |
|---|---|
| Booléen | Vrai si le champ est défini dans la table, sinon faux. |
Cet exemple vérifie si le champ sys_class_name existe dans la table cmds_software_instance.
var gobj = new GlideRecord('sys_db_object');
gobj.addQuery('name','cmdb_software_instance');
gobj.query();
if (!gobj.next()) {
var si = new GlideRecord('cmdb_software_instance');
si.query();
var count = 0;
while (si.next()) {
if (!si.isValidField('sys_class_name')) {
var ci = new GlideRecord('cmdb_ci');
ci.name = si.name;
ci.setNewGuidValue(si.sys_id);
ci.sys_class_name = 'cmdb_software_instance';
ci.insert();
count++;
}
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode isValidField() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : isValidField().
GlideRecord : isValidRecord()
Détermine si l’enregistrement actuel est valide.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant si l’enregistrement actuel est valide. Valeurs valides :
|
Cet exemple vérifie si l’identificateur d’enregistrement par le sys_id transmis est un enregistrement valide dans la table d’idées.
function(sysId) {
this.log('Inside acceptIdea sysId = ' + sysId);
var now_GR = new GlideRecord('idea');
now_GR.get(sysId);
this.log('now_GR.isValidRecord() = ' + now_GR.isValidRecord());
if(now_GR.isValidRecord()) {
now_GR.setValue('state', 2);
this.log('Updating gliderecord');
this.log('gliderecord table name' + now_GR.getTableName());
now_GR.update();
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode isValidRecord() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : isValidRecord().
GlideRecord : newRecord()
Crée un GlideRecord, définit les valeurs par défaut des champs et affecte un ID unique à l’enregistrement.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
Cet exemple vérifie si le nouvel enregistrement a été inséré dans la table de sys_user.
var now_GR = new GlideRecord("sys_user");
now_GR.newRecord();
now_GR.setValue("user_name", "John Smith");
gs.print("Is this a new record: " + now_GR.isNewRecord());
var now_GR2 = new GlideRecord("sys_user");
now_GR2.addQuery("user_name", "Abel Tutor");
now_GR2.query();
now_GR2.next();
gs.print("Is this a new record: " + now_GR2.isNewRecord());
Équivalent dans le champ d’application
Pour utiliser la méthode newRecord() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : newRecord().
GlideRecord - next()
Passe à l’enregistrement suivant dans le GlideRecord.
Utilisez cette méthode pour parcourir les enregistrements renvoyés par une requête GlideRecord.
if(myObj.next()) ne traite que le premier enregistrement retourné.| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant s’il existe un enregistrement « suivant » dans le GlideRecord. Valeurs valides :
|
Cet exemple montre comment itérer dans la table Incident à l’aide de la méthode next().
var rec = new GlideRecord('incident');
rec.query();
while (rec.next()) {
gs.print(rec.number + ' exists');
}
Équivalent dans le champ d’application
Pour utiliser la méthode next() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : next().
GlideRecord : _next()
Passe à l’enregistrement suivant dans le GlideRecord. Fournit la même fonctionnalité que next(), destinée à être utilisée dans les cas où le GlideRecord a une colonne nommée next.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Vrai s’il existe d’autres enregistrements dans l’ensemble de requêtes. |
var rec = new GlideRecord('sys_template');
rec.query();
while (rec._next()) {
gs.print(rec.number + ' exists');
}
Équivalent dans le champ d’application
Pour utiliser la méthode _next() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : _next().
GlideRecord : opération()
Détermine si une opération doit être insérée, mise à jour ou supprimée.
Connaître l’opération permet d’utiliser current.operation() pour créer une règle métier générique capable de gérer chaque opération de manière unique.
Pour plus d’informations sur l’utilisation de la variable globale actuelle, reportez-vous à la section Variables globales dans les règles métier.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | L’opération en cours. Valeurs possibles :
|
L’exemple suivant montre comment utiliser cette méthode dans une règle métier. La méthode operation() détecte quelle opération a déclenché un événement et effectue une action différente en fonction des opérations de mise à jour et d’insertion.
if(current.operation() == "update") {
current.updates ++; }
if(current.operation() == "insert") {
current.updates = 0; }
Cet exemple montre comment utiliser la méthode operation() pour transmettre la valeur de l’opération dans la méthode startFlow().
function createNewTransferOrder() {
var toGr = new GlideRecord("alm_transfer_order");
toGr.initialize();
// From Stockroom - Southern California Warehouse
toGr.setValue('from_stockroom', fromStockroomSysId);
// To Stockroom - San Diego North - Pickup/Dropoff
toGr.setValue('to_stockroom', toStockroomSysId);
var transferOrder = toGr.insert();
if(toGr.get(transferOrder)){
// Start Transfer Order Workflow
var wf = new Workflow();
var context = wf.startFlow(toWorkflowSysId, toGr, toGr.operation(),{});
createNewTransferOrderLine(transferOrder);
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode operation() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : operation().
GlideRecord : orderBy(String fieldName)
Spécifie un nom de champ à utiliser pour commander l’ensemble de requêtes. Pour trier par champs multiples, appelez cette méthode plusieurs fois avec des valeurs de champ différentes.
| Nom | Type | Description |
|---|---|---|
| Fieldname | Chaîne | Champ sur lequel commander l’ensemble de requêtes. |
| Type | Description |
|---|---|
| nul |
Cet exemple montre comment trier l’ensemble de requêtes par « ordre » puis par « numéro ».
function UpdateProjectWBS(project) {
var count = 0;
var child = new GlideRecord('pm_project_task');
child.addQuery('parent', project.sys_id);
child.orderBy('order');
child.orderBy('number');
child.query();
var len = child.getRowCount().toString().length;
var seq = 0;
while (child.next()) {
count += UpdateProjectTaskWBS(child, 1, ++seq, len, '');
}
gs.addInfoMessage(count + ' Project Tasks updated');
}
Équivalent dans le champ d’application
Pour utiliser la méthode orderBy() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : orderBy().
GlideRecord – orderByDesc(String, fieldName)
Spécifie le champ à utiliser pour classer l’ensemble de requêtes par ordre décroissant.
| Nom | Type | Description |
|---|---|---|
| Fieldname | Chaîne | Nom du champ à utiliser pour classer les résultats de la requête par ordre décroissant. |
| Type | Description |
|---|---|
| nul |
Cet exemple montre comment classer l’ensemble de requêtes dans l’ordre croissant ou décroissant.
function(fiscalType, orderByDesc) {
var now_GR = new GlideRecord('fiscal_period');
now_GR.addQuery('fiscal_type', fiscalType);
if (orderByDesc) {
now_GR.orderByDesc('fiscal_start_date_time');
} else {
now_GR.orderBy('fiscal_start_date_time');
}
now_GR.setLimit(1);
now_GR.query();
now_GR.next();
return now_GR.sys_id;
}
Équivalent dans le champ d’application
Pour utiliser la méthode orderByDesc() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : orderByDesc().
GlideRecord : requête (champ de chaîne, valeur de chaîne)
Exécute une requête sur la table en fonction des filtres spécifiés par les méthodes de requête telles que addQuery() et addEncodedQuery().
Cette méthode interroge la table GlideRecord ainsi que toutes les références de la table. Pour plus d’informations, reportez-vous à la rubrique Interrogation des tables dans le script.
Consultez l’article GlideRecord pour plus d’informations sur la création et l’exécution de requêtes.
| Nom | Type | Description |
|---|---|---|
| nom | Chaîne | Facultatif - doit également spécifier un paramètre de valeur. Nom du champ dans lequel rechercher la valeur spécifiée dans le paramètre de valeur. Remarque : Cette méthode est généralement exécutée sans arguments, mais vous pouvez spécifier une paire nom-valeur pour filtrer les enregistrements contenant les valeurs spécifiées. Si les paramètres sont spécifiés, la condition « nom=valeur » est ajoutée à la requête. |
| valide | Chaîne | Facultatif : doit également spécifier un paramètre de champ. Valeur à rechercher dans le paramètre de champ spécifié. |
| Type | Description |
|---|---|
| nul |
L’exemple suivant montre comment analyser le dictionnaire système [sys_dictionary] à la recherche de tables avec un champ de requête.
var tableArr = [];
var now_GR = new GlideRecord('sys_dictionary');
now_GR.addQuery('element', 'query');
now_GR.setLimit(6);
now_GR.query();
while(now_GR.next()){
tableArr.push(now_GR.name.getValue());
};
gs.info('The following tables have a field column called "query":');
for (i = 0; i < tableArr.length; i++) {
gs.info(tableArr[i]);
};
Sortie :
The following tables have a field column called "query":
cmdb_convert_bulk_services
cmdb_multisource_query_status
cmdb_qb_result_base
cmdb_qb_table_mapping
discovery_probes_cim_query
kb_feedback
Équivalent dans le champ d’application
Pour utiliser la méthode query() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : query().
GlideRecord : _query(champ de chaîne, valeur de chaîne)
Exécute une requête sur la table en fonction des filtres spécifiés par les méthodes de requête telles que addQuery() et addEncodedQuery(). Cette méthode est destinée à être utilisée sur les tables dans lesquelles il y a une colonne nommée « query », ce qui peut provoquer des erreurs lors de l’exécution de la méthode query().
Cette méthode interroge la table GlideRecord ainsi que toutes les références de la table. Pour plus d’informations, reportez-vous à la rubrique Interrogation des tables dans le script.
Consultez l’article GlideRecord pour plus d’informations sur la création et l’exécution de requêtes.
| Nom | Type | Description |
|---|---|---|
| nom | Chaîne | Facultatif - doit également spécifier un paramètre de valeur. Nom du champ dans lequel rechercher la valeur spécifiée dans le paramètre de valeur. Remarque : Cette méthode est généralement exécutée sans arguments, mais vous pouvez spécifier une paire nom-valeur pour filtrer les enregistrements contenant les valeurs spécifiées. Si les paramètres sont spécifiés, la condition « nom=valeur » est ajoutée à la requête. |
| valide | Chaîne | Facultatif : doit également spécifier un paramètre de champ. Valeur à rechercher dans le paramètre de champ spécifié. |
| Type | Description |
|---|---|
| nul |
L’exemple suivant montre comment interroger la table Feedback de la base de connaissances [kb_feedback] et répertorier les articles de la base de connaissances avec des commentaires qui incluent Excel.
var rec = new GlideRecord('kb_feedback');
rec.addQuery('comments', 'CONTAINS', 'Excel');
rec._query();
while (rec.next()) {
gs.info(rec.getDisplayValue('article') + " comment: " + rec.getValue('comments'));
}
Sortie :
KB0000005 comment:
Can you please add the version of Excel this applies to? All?
KB0000005 comment:
Does this work for all Excel versions? OSX and Windows alike?
Équivalent dans le champ d’application
Pour utiliser la méthode _query() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : _query().
GlideRecord : queryNoDomain(champ de chaîne, valeur de chaîne)
Utilisé dans des instances séparées par domaine. Semblable à query(), exécute la requête sur la table en fonction des filtres spécifiés par addQuery() et addEncodedQuery(), mais ignore les domaines.
Cette méthode interroge la table GlideRecord ainsi que toutes les références de la table. Pour plus d’informations, reportez-vous à la rubrique Interrogation des tables dans le script.
| Nom | Type | Description |
|---|---|---|
| nom | Chaîne | Facultatif - doit également spécifier un paramètre de valeur. Nom du champ dans lequel rechercher la valeur spécifiée dans le paramètre de valeur. Remarque : Cette méthode est généralement exécutée sans arguments, mais vous pouvez spécifier une paire nom-valeur pour filtrer les enregistrements contenant les valeurs spécifiées. Si les paramètres sont spécifiés, la condition « nom=valeur » est ajoutée à la requête. |
| valide | Chaîne | Facultatif : doit également spécifier un paramètre de champ. Valeur à rechercher dans le paramètre de champ spécifié. |
| Type | Description |
|---|---|
| nul |
Cet exemple montre comment interroger la table d’incidents pour tous les domaines.
var rec = new GlideRecord('incident');
rec.queryNoDomain();
while (rec.next()) {
gs.print(rec.number + ' exists');
}
GlideRecord : restoreLocation()
Définit l’enregistrement actuel comme étant l’enregistrement qui a été enregistré avec saveLocation(). Si saveLocation() n’a pas été appelé, l’enregistrement courant est défini sur le premier enregistrement du GlideRecord.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
Cet exemple montre comment sauvegarder l’emplacement actuel de l’enregistrement, passer à l’enregistrement suivant, puis revenir à l’emplacement enregistré.
function() {
var now_GR = new GlideRecord("incident");
now_GR.query();
now_GR.next();
var firstID = now_GR.getValue("sys_id");
now_GR.next();
var restoreID = now_GR.getValue("sys_id");
now_GR.saveLocation();
now_GR.next();
var lastID = now_GR.getValue("sys_id");
now_GR.restoreLocation();
now_GR.next();
var thisID = now_GR.getValue("sys_id");
var progress = "first id=" + firstID
+ "\n\t last id=" + lastID
+ "\n\t saved id=" + restoreID
+ "\n\t restored id=" + thisID;
gs.print("Progress:\n\t" + progress);
}
GlideRecord : saveLocation()
Enregistre le numéro de ligne actuel afin que vous puissiez revenir à cet emplacement à l’aide de la méthode restoreLocation().
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| nul |
Cet exemple montre comment sauvegarder l’emplacement actuel de l’enregistrement, passer à l’enregistrement suivant, puis revenir à l’emplacement enregistré.
function() {
var now_GR = new GlideRecord("incident");
now_GR.query();
now_GR.next();
var firstID = now_GR.getValue("sys_id");
now_GR.next();
var restoreID = now_GR.getValue("sys_id");
now_GR.saveLocation();
now_GR.next();
var lastID = now_GR.getValue("sys_id");
now_GR.restoreLocation();
now_GR.next();
var thisID = now_GR.getValue("sys_id");
var progress = "first id=" + firstID
+ "\n\t last id=" + lastID
+ "\n\t saved id=" + restoreID
+ "\n\t restored id=" + thisID;
gs.print("Progress:\n\t" + progress);
}
GlideRecord : setAbortAction(Booléen b)
Définit un marqueur indiquant si la prochaine action de base de données (insérer, mettre à jour, supprimer) doit être abandonnée.
À utiliser dans une règle métier onBefore pour empêcher l’exécution de l’action de base de données. La règle métier continue de s’exécuter après l’appel de setAbortAction(). L’appel de setAbortAction() n’empêche pas l’exécution des règles métier suivantes. L’appel de cette méthode empêche uniquement l’action de base de données de se produire.
| Nom | Type | Description |
|---|---|---|
| b | Booléen | Vrai pour annuler l’action suivante ou faux pour autoriser l’action suivante. |
| Type | Description |
|---|---|
| nul |
if ((!current.u_date1.nil()) && (!current.u_date2.nil())) {
var start = current.u_date1.getGlideObject().getNumericValue();
var end = current.u_date2.getGlideObject().getNumericValue();
if (start > end) {
gs.addInfoMessage('start must be before end');
current.u_date1.setError('start must be before end');
current.setAbortAction(true);
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode setAbortAction() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : setAbortAction().
GlideRecord : setDisplayValue(nom de chaîne, valeur de l’objet)
Définit le champ spécifié sur la valeur d’affichage spécifiée.
Pour un champ de référence, il s’agit de la valeur d’affichage de la table. Pour une date/heure, il s’agit de l’heure dans le fuseau horaire actuel de l’appelant.
| Nom | Type | Description |
|---|---|---|
| nom | Chaîne | Nom du champ dont la valeur d’affichage doit être définie. |
| valide | Objet | Affichez la valeur du champ spécifié. |
| Type | Description |
|---|---|
| nul |
var now_GR = new GlideRecord('incident');
now_GR.get('46f09e75a9fe198100f4ffd8d366d17b');
now_GR.setDisplayValue('opened_at','2011-02-13 4:30:00');
now_GR.update();
GlideRecord : setForceUpdate(force booléenne)
Met à jour l’enregistrement même si les champs n’ont pas changé.
| Nom | Type | Description |
|---|---|---|
| Force | Booléen | Vrai pour mettre à jour même si les champs n’ont pas changé, sinon faux. |
| Type | Description |
|---|---|
| nul |
Cet exemple montre comment forcer la mise à jour d’un enregistrement de la table itfm_cost_model, même sans modifications.
function() {
gs.log("Update Script: Upgrade_cost_model_data.js started");
var now_GR = new GlideRecord("itfm_cost_model");
now_GR.initialize();
now_GR.addNullQuery("source_table");
now_GR.query();
while (now_GR.next()) {
now_GR.setForceUpdate(true);
var sourceTable = getSourceTable(now_GR.getValue('clone_from'));
if(sourceTable){
now_GR.setValue("source_table", sourceTable);
now_GR.setWorkflow(false);
now_GR.update();
}
}
}
GlideRecord : setLimit(limite de nombre)
Définit le nombre maximal d’enregistrements à renvoyer dans le GlideRecord à partir d’une requête.
| Nom | Type | Description |
|---|---|---|
| limite | Numéro | Limite pour les enregistrements à extraire. |
| Type | Description |
|---|---|
| nul |
Cet exemple définit le nombre d’enregistrements renvoyés dans la requête sur un maximum de dix.
var now_GR = new GlideRecord('incident');
now_GR.orderByDesc('sys_created_on');
now_GR.setLimit(10);
now_GR.query();
Équivalent dans le champ d’application
Pour utiliser la méthode setLimit() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : setLimit().
GlideRecord : setLocation(Number rowNumber)
Définit l’emplacement de la ligne actuelle sur la valeur spécifiée.
| Nom | Type | Description |
|---|---|---|
| numéro de ligne | Numéro | Numéro de ligne à définir comme ligne actuelle. |
| Type | Description |
|---|---|
| nul |
Cet exemple montre comment définir la position de l’enregistrement dans la table Incident
verifySetLocation : function() {
var now_GR = new GlideRecord("incident");
now_GR.query();
var recordIDs = new Array();
while(now_GR.next()) {
recordIDs.push(now_GR.getValue("sys_id"));
}
for (var ix = recordIDs.length - 1; ix >= 0; ix--) {
now_GR.setLocation(ix);
Assert.assertEquals(recordIDs[ix], now_GR.getValue("sys_id"),
"The entry retrieved for the index " + ix + " is not valid");
}
}
GlideRecord : setNewGuid()
Génère un nouveau GUID et le définit comme ID unique (sys_id) de l’enregistrement actuel.
Cette fonction s’applique uniquement aux nouveaux enregistrements. Vous ne pouvez pas modifier le GUID d’un enregistrement existant.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Sys_id de l’enregistrement actuel. |
Cet exemple crée un nouvel enregistrement de tâche et stocke l’ID dans la table task_rel_task.
var task = new GlideRecord ('task');
var tsk_id = task.setNewGuid();
task.description = "Request: " + current.request.number;
task.description = task.description + "\n" + "Requested by: " + current.request.u_requested_by.name;
task.description = task.description + "\n" + "Requested for: " + current.request.u_requested_for.name;
task.description = task.description + "\n" + "Item: " + current.cat_item.name;
var now_GR = new GlideRecord ('task_rel_task');
//link the incident to the request
now_GR.parent = current.request;
now_GR.child = tsk_id;
now_GR.insert();
GlideRecord : setNewGuidValue (guid de chaîne)
Génère un nouveau GUID et le définit comme ID unique de l’enregistrement actuel lors de l’insertion d’un nouvel enregistrement.
| Nom | Type | Description |
|---|---|---|
| guid | Chaîne | Valeur du nouveau GUID. |
| Type | Description |
|---|---|
| nul |
Cet exemple génère un nouveau GUID et le définit comme ID unique pour l’enregistrement de cmdb_software_instance nouvellement créé.
var gobj = new GlideRecord('sys_db_object');
gobj.addQuery('name','cmdb_software_instance');
gobj.query();
if (!gobj.next()) {
var si = new GlideRecord('cmdb_software_instance');
si.query();
var count = 0;
while (si.next()) {
if (!si.isValidField('sys_class_name')) {
var ci = new GlideRecord('cmdb_ci');
ci.name = si.name;
ci.setNewGuidValue(si.sys_id);
ci.sys_class_name = 'cmdb_software_instance';
ci.insert();
count++;
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode setNewGuidValue() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : setNewGuidValue().
GlideRecord : setQueryReferences(Boolean queryReferences)
Active ou désactive l’utilisation du nom d’affichage du champ de référence lors de l’interrogation d’un champ de référence.
| Nom | Type | Description |
|---|---|---|
| Références requeryReference | Booléen | Marqueur indiquant l’heure des données à générer. Valeurs valides :
|
| Type | Description |
|---|---|
| nul |
var grByName = new GlideRecord(this.TEST_TABLE);
grByName.addQuery("caller_id", userDisplayName);
grByName.setQueryReferences(true);
grByName.query();
if (grByName.hasNext()) {
while(grByName.next()) {
gs.print("Incident caller_id=" + grByName.caller_id);
}
} else {
gs.print("NO RESULTS");
}
GlideRecord : setUseEngines(booléen e)
Désactive ou active l’exécution de n’importe quel moteur (règles d’approbation/règles d’affectation).
| Nom | Type | Description |
|---|---|---|
| E | Booléen | Marqueur indiquant s’il faut activer ou désactiver le fonctionnement de n’importe quel moteur. Valeurs valides :
|
| Type | Description |
|---|---|
| nul |
Cet exemple montre comment désactiver les moteurs et les règles métier avant d’exécuter une requête.
function auditOAuthInboundRequestsUsage(){
var now_GR = new GlideRecord("oauth_credential");
var oauthClient = now_GR.addJoinQuery("oauth_entity", "peer", "sys_id");
now_GR.addQuery("type", "access_token");
now_GR.addQuery("expires", ">", nowDateTime());
now_GR.addNullQuery("oauth_requestor_profile");
oauthClient.addCondition("active", "true");
oauthClient.addCondition("type", "client");
now_GR.setUseEngines(false);
now_GR.setWorkflow(false);
now_GR.query();
return now_GR.hasNext();
}
GlideRecord – setValue(nom de chaîne, valeur de l’objet)
Définit le champ spécifié sur la valeur spécifiée.
Normalement, un script effectue une affectation directe, par exemple, now_GR.category = value. Toutefois, si dans un script le nom d’élément est une variable, vous pouvez utiliser now_GR.setValue(elementName, value). Lors de la définition d’une valeur, assurez-vous que le type de données du champ correspond au type de données de la valeur que vous saisissez.
| Nom | Type | Description |
|---|---|---|
| nom | Chaîne | Nom du champ dont vous souhaitez définir la valeur. |
| valide | Objet | Valeur à définir dans le champ spécifié. |
| Type | Description |
|---|---|
| nul |
Cet exemple montre comment définir la valeur du champ state dans la table planned_task.
function() {
var topTask = new GlideRecord('planned_task');
topTask.setValue('state', -5);
var childTask = new GlideRecord('planned_task');
childTask.setValue('state', -5);
var s = new PlannedTaskStateManagement(childTask, topTask);
var state = s.manageStateChange(false);
Assert.assertEquals("-5", state);
}
Équivalent dans le champ d’application
Pour utiliser la méthode setValue() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : setValue().
GlideRecord : setWorkflow(booléen e)
Active ou désactive l’exécution de règles métier qui peuvent normalement être déclenchées par les actions suivantes. Si le e paramètre est défini sur false, une insertion/mise à jour ne sera pas auditée. L’audit se produit uniquement lorsque le paramètre est défini sur vrai pour une opération GlideRecord.
| Nom | Type | Description |
|---|---|---|
| E | Booléen | Marqueur indiquant s’il faut activer ou désactiver l’exécution des règles métier. Valeurs valides :
|
| Type | Description |
|---|---|
| nul |
doit('name1','name2');
function doit(username1,username2) {
var usr1 = new GlideRecord('sys_user');
var usr2 = new GlideRecord('sys_user');
var num = 0;
if (usr1.get('user_name',username1) && usr2.get('user_name',username2)) {
var ref;
var dict = new GlideRecord('sys_dictionary');
dict.addQuery('reference','sys_user');
dict.addQuery('internal_type','reference');
dict.query();
while (dict.next()) {
num = 0;
ref = new GlideRecord(dict.name.toString());
ref.addQuery(dict.element,usr1.sys_id);
ref.query();
while (ref.next()) {
ref.setValue(dict.element.toString(),usr2.sys_id);
ref.setWorkflow(false);
ref.update();
num++;
}
if (num > 0) {
gs.print(dict.element + ' changed from ' + usr1.user_name +
' to ' + usr2.user_name + ' in ' + num + ' ' + dict.name + ' records');
}
}
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode setWorkflow() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : setWorkflow().
GlideRecord : mettre à jour (motif de l’objet)
Met à jour le GlideRecord avec toutes les modifications apportées. Si l’enregistrement n’existe pas, il est inséré.
| Nom | Type | Description |
|---|---|---|
| motif | Objet | Facultatif. Motif de la mise à jour. Le motif apparaît dans l’enregistrement d’audit. |
| Type | Description |
|---|---|
| Chaîne | sys_id du nouvel enregistrement ou de l’enregistrement de mise à jour. Renvoie null si la mise à jour échoue. |
Cet exemple met à jour un enregistrement dans la table task_ci.
var now_GR = new GlideRecord('task_ci');
now_GR.addQuery();
now_GR.query();
var count = now_GR.getRowCount();
if (count > 0) {
var allocation = parseInt(10000 / count) / 100;
while (now_GR.next()) {
now_GR.u_allocation = allocation;
now_GR.update();
}
}
Équivalent dans le champ d’application
Pour utiliser la méthode update() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : update().
GlideRecord : updateMultiple()
Met à jour chaque GlideRecord dans une requête déclarée avec un ensemble spécifié de changements.
Pour plus d’informations sur l’ajout d’entrées de journal, reportez-vous à la méthode setJournalEntry().
La glide.db.forced.chunk.threshold propriété système définit le seuil au-dessus duquel les enregistrements de blocs sont supprimés et mis à jour. Le découpage en bloc permet d’éviter que des suppressions de clés non primaires sur des tables volumineuses n’entraînent des problèmes de réplication. Pour plus d'informations, consultez Available system properties.
gr.setValue('<field_name>', '4')) ; au lieu de gr.<field_name> = 4.Cette méthode définit de nouvelles valeurs et n’efface pas les valeurs existantes. Pour effacer une valeur existante, utilisez la méthode setValue() et définissez le champ sur null.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Néant |
Cet exemple montre comment mettre à jour l’état de tous les incidents actifs sur 4 - « En attente d’infos utilisateur ».
var now_GR = new GlideRecord('incident');
now_GR.addQuery('active', true);
now_GR.setValue('state', 4);
now_GR.updateMultiple();
Équivalent dans le champ d’application
Pour utiliser la méthode updateMultiple() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : updateMultiple().
GlideRecord : updateWithReferences(motif de l’objet)
Met à jour un enregistrement et insère ou met à jour tout enregistrement connexe avec les informations fournies.
| Nom | Type | Description |
|---|---|---|
| motif | Objet | Motif des mises à jour. Le motif est affiché dans l’enregistrement d’audit. |
| Type | Description |
|---|---|
| Chaîne | sys_id de l’enregistrement en cours de mise à jour. |
Si vous traitez un incident où l’ID d’appelant est défini pour référencer sys_user’enregistrement « John Doe », le code suivant mettra à jour l’enregistrement utilisateur de John Doe. Si un incident pour lequel aucun ID d’appelant n’est spécifié, le code suivant crée un nouvel enregistrement de sys_user avec les informations fournies (first_name, last_name) et définit la valeur d’ID de l’appelant sur l’enregistrement de sys_user nouvellement créé.
var inc = new GlideRecord('incident');
inc.get(inc_sys_id); // Looking up an existing incident record where 'inc_sys_id' represents the sys_id of a incident record
inc.caller_id.first_name = 'John';
inc.caller_id.last_name = 'Doe';
inc.updateWithReferences();
}