GlideRecord : Global
Die GlideRecord -API wird für Datenbankvorgänge verwendet.
Die GlideRecord -API ist das primäre Kommunikationsmittel mit der Datenbank im serverseitigen Code. Ein GlideRecord ist ein Objekt, das Datensätze aus einer einzelnen Tabelle enthält. Verwenden Sie die API, um ein GlideRecord-Objekt zu instanziieren und Abfrageparameter, Filter, Grenzwerte und Reihenfolgen hinzuzufügen.
Um diese API zum Erstellen dynamischer Attribute zu verwenden, benötigen Sie die Rolle „dynamic_schema_writer“. Um dynamische Daten mit dieser API zu lesen, benötigen Sie die Rolle „dynamic_schema_reader“.
Weitere Informationen zu dynamischen Attributen finden Sie unter Dynamic Schema.
Weitere Informationen zum Erstellen und Ausführen von Abfragen finden Sie im GlideRecord -Artikel.
Informationen zu GlideRecordSecure, einer von GlideRecord geerbten Klasse, die dieselben Funktionen wie GlideRecord ausführt und außerdem ACLs erzwingt, finden Sie in den GlideServer-APIs.
Testen Sie Abfragen immer in einer Test- und Entwicklungsumgebung, bevor Sie sie in einer Produktionsinstanz bereitstellen. Eine falsch erstellte codierte Abfrage, z. B. das Hinzufügen eines ungültigen Feldnamens, führt zu einer ungültigen Abfrage. Wenn die ungültige Abfrage ausgeführt wird, wird der ungültige Teil der Abfragebedingung gelöscht und die Ergebnisse basieren auf dem gültigen Teil der Abfrage, der möglicherweise alle Datensätze aus der Tabelle zurückgibt. Die Methode insert(), update(), deleteRecord() oder deleteMultiple() kann bei schlechten Abfrageergebnissen zu Datenverlust führen.
Sie können die Systemeigenschaft glide.invalid_query.returns_no_rows auf „true“ festlegen, damit Abfragen mit ungültigen codierten Abfragen keine Datensätze zurückgeben. In einigen Fällen gibt die Abfrage möglicherweise noch Datensätze in API-Ergebnissen zurück, auch wenn glide.invalid_query.returns_no_rows auf „true“ festgelegt ist. Dies geschieht in Abfragen, in denen ein ungültiger Abfragebegriff mit einem WHERE-Operator verwendet wird. In solchen Abfragen ignoriert der Operator WHERE die ungültigen Begriffe, interpretiert den Rest der Abfrageanweisung jedoch und gibt ihn zurück. Weitere Informationen zu dieser Systemeigenschaft und ihrer Funktionalität finden Sie unter Available system properties.
Rufen Sie Werte aus Datensätzen ab
In den meisten Fällen sollten Sie kein Dot-Walking verwenden, um Werte aus einem Datensatz abzurufen. Beim Dot-Walking wird das gesamte Objekt anstelle des Feldwerts abgerufen. Das Abrufen des Objekts verbraucht mehr Speicher und kann zu unerwünschten Ergebnissen führen, wenn es in Arrays oder in Serviceportalverwendet wird.
Anstatt das gesamte Objekt abzurufen, können Sie eine der folgenden Methoden verwenden, um die Feldwerte zu kopieren:
var mgr = current.caller_id.manager.toString();Dynamische Attribute
Diese API enthält Methoden mit derselben Funktionalität wie dynamische Schemamethoden in der GlideDynamicAttributeStore : Global -API. Verwenden Sie die dynamischen Attributmethoden in dieser API, um Aktionen für einen angegebenen GlideRecord auszuführen. Verwenden Sie die Methoden in der GlideDynamicAttributeStore -API, wenn Sie dieselbe Gruppe dynamischer Attribute für mehrere Datensätze festlegen möchten. Mit dieser API können Sie ein GlideDynamicAttributeStore-Objekt mit den gewünschten Attributen bereitstellen und dieses Objekt dann mit den verschiedenen setDynamicAttributeValues()- Methoden in mehrere GlideRecords kopieren.
GlideRecord – GlideRecord(String tableName)
Erstellt eine Instanz der GlideRecord-Klasse für die angegebene Tabelle.
| Name | Typ | Beschreibung |
|---|---|---|
| tableName | Zeichenfolge | Zu verwendende Tabelle. |
var now_GR = new GlideRecord('incident');
GlideRecord – addActiveQuery()
Fügt einen Filter hinzu, um aktive Datensätze zurückzugeben.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| GlideQueryCondition | Filter, um aktive Datensätze zurückzugeben. |
var inc = new GlideRecord('incident');
inc.addActiveQuery();
inc.query();
Bereichsbezogenes Äquivalent
Um die addActiveQuery()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: addActiveQuery().
GlideRecord – addDomainQuery(Object glideRecord)
Ändert die für die Abfrage verwendete Domäne von der Domäne des Benutzers in die Domäne des bereitgestellten GlideRecord.
Testen Sie Abfragen immer in einer Test- und Entwicklungsumgebung, bevor Sie sie in einer Produktionsinstanz bereitstellen. Eine falsch erstellte codierte Abfrage, z. B. das Hinzufügen eines ungültigen Feldnamens, führt zu einer ungültigen Abfrage. Wenn die ungültige Abfrage ausgeführt wird, wird der ungültige Teil der Abfragebedingung gelöscht und die Ergebnisse basieren auf dem gültigen Teil der Abfrage, der möglicherweise alle Datensätze aus der Tabelle zurückgibt. Die Methode insert(), update(), deleteRecord() oder deleteMultiple() kann bei schlechten Abfrageergebnissen zu Datenverlust führen.
Sie können die Systemeigenschaft glide.invalid_query.returns_no_rows auf „true“ festlegen, damit Abfragen mit ungültigen codierten Abfragen keine Datensätze zurückgeben. In einigen Fällen gibt die Abfrage möglicherweise noch Datensätze in API-Ergebnissen zurück, auch wenn glide.invalid_query.returns_no_rows auf „true“ festgelegt ist. Dies geschieht in Abfragen, in denen ein ungültiger Abfragebegriff mit einem WHERE-Operator verwendet wird. In solchen Abfragen ignoriert der Operator WHERE die ungültigen Begriffe, interpretiert den Rest der Abfrageanweisung jedoch und gibt ihn zurück. Weitere Informationen zu dieser Systemeigenschaft und ihrer Funktionalität finden Sie unter Available system properties.
Diese Funktion erfordert das Plugin „Domain Support – Domain Extensions Installer“ (com.glide.domain.msp_extensions.installer).
| Name | Typ | Beschreibung |
|---|---|---|
| glideRecord | Objekt | GlideRecord, aus dem die Domäne abgerufen werden kann. |
| Typ | Beschreibung |
|---|---|
| void |
//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);
}
Bereichsbezogenes Äquivalent
Diese Methode ist in bereichsbezogenen Anwendungen nicht verfügbar.
GlideRecord – addEncodedQuery(String query, BooleanforceFieldACL)
Fügt eine codierte Abfrage anderen Abfragen hinzu, die möglicherweise festgelegt wurden.
Testen Sie Abfragen immer in einer Test- und Entwicklungsumgebung, bevor Sie sie in einer Produktionsinstanz bereitstellen. Eine falsch erstellte codierte Abfrage, z. B. das Hinzufügen eines ungültigen Feldnamens, führt zu einer ungültigen Abfrage. Wenn die ungültige Abfrage ausgeführt wird, wird der ungültige Teil der Abfragebedingung gelöscht und die Ergebnisse basieren auf dem gültigen Teil der Abfrage, der möglicherweise alle Datensätze aus der Tabelle zurückgibt. Die Methode insert(), update(), deleteRecord() oder deleteMultiple() kann bei schlechten Abfrageergebnissen zu Datenverlust führen.
Sie können die Systemeigenschaft glide.invalid_query.returns_no_rows auf „true“ festlegen, damit Abfragen mit ungültigen codierten Abfragen keine Datensätze zurückgeben. In einigen Fällen gibt die Abfrage möglicherweise noch Datensätze in API-Ergebnissen zurück, auch wenn glide.invalid_query.returns_no_rows auf „true“ festgelegt ist. Dies geschieht in Abfragen, in denen ein ungültiger Abfragebegriff mit einem WHERE-Operator verwendet wird. In solchen Abfragen ignoriert der Operator WHERE die ungültigen Begriffe, interpretiert den Rest der Abfrageanweisung jedoch und gibt ihn zurück. Weitere Informationen zu dieser Systemeigenschaft und ihrer Funktionalität finden Sie unter Available system properties.
| Name | Typ | Beschreibung |
|---|---|---|
| query | Zeichenfolge | Eine codierte Abfragezeichenfolge. |
| forceFieldACL | Boolean | Optional. Kennzeichnung, die angibt, ob Feld-ACL-Regeln (Access Control List, Zugriffssteuerungsliste) erzwungen werden sollen. Gültige Werte:
Standardwert: false |
| Typ | Beschreibung |
|---|---|
| void |
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);
}
Bereichsbezogenes Äquivalent
Um die addEncodedQuery()-Methode in einer Bereichsanwendung zu verwenden, verwenden Sie die entsprechende Bereichsmethode: addEncodedQuery().
GlideRecord – addExtraField(String DotWalkedField)
Fragt ein oder mehrere Dot-Walking-Felder aus einem Formular oder Skript in einer einzigen Anforderung ab.
Mit der Methode addExtraField() können Sie Dot-Walking-Felder in einer einzigen Datenbankanforderung abfragen, anstatt mehrere Abfragen pro Dot-Walking-Element in einem Formular oder Skript durchzuführen (was mehrere Roundtrips zur Datenbank erfordert).
| Name | Typ | Beschreibung |
|---|---|---|
| DotWalkField | Zeichenfolge | Der Dot-Walking-Feldname. Ebenen von Feldnamen werden durch Punkte (Punkte) getrennt. Geben Sie beispielsweise den Wert Caller.Company ein, wenn Sie den abfragen möchten Bedingung in der Incident-Tabelle [incident].Das Format dotWalkedField folgt der Reihenfolge der Felder von links nach rechts in einem Dot-Walk-Formular oder Skript. |
| Typ | Beschreibung |
|---|---|
| Keine | Hinweis: Die Methode addExtraField() hat keine Auswirkungen auf die Ausgabeergebnisse. Die Ausgabe ist immer dieselbe, unabhängig davon, ob Sie diese Methode in Ihrem Skript verwenden. |
var gliderecord = new GlideRecord("incident");
gliderecord.addQuery("number", "INC0041457");
gliderecord.addExtraField("cmdb_ci.location.contact.name");
gliderecord.query();
gliderecord.next();
gs.print(gliderecord.cmdb_ci.location.contact.name);
Die Ausgabe entspricht gs.print(gr.cmdb_ci.location.contact.name) ohne Verwendung von addExtraField(). Die Methode addExtraField() optimiert die Abfrage der Dot-Walking-Felder. Beispielausgabe:
Abel Tuter
GlideRecord – addFunction(Object function)
Wendet ein vordefiniertes GlideDBFunctionBuilder-Objekt auf einen Datensatz an.
Verwenden Sie die bereichsbezogene GlideDBFunctionBuilder-Klasse, um eine Funktion zu definieren. Nachdem die Funktion definiert wurde, verwenden Sie die addFunction(Object function)-Methode, um die Funktion auf einen Datensatz anzuwenden.
| Name | Typ | Beschreibung |
|---|---|---|
| function | Objekt | Ein GlideDBFunctionBuilder- oder GlideDBcaseStatementBuilder-Objekt, das einen SQL-Vorgang definiert |
| Typ | Beschreibung |
|---|---|
| void |
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));
Ausgabe:
*** Script: 1
*** Script: 4
*** Script: 3
*** Script: 1
*** Script: 1
*** Script: 2
*** Script: 1
*** Script: 1
GlideRecord – addInactiveQuery()
Fügt einen Filter hinzu, um inaktive Datensätze zurückzugeben. Inaktive Datensätze weisen „false“ für das aktive Flag auf.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| GlideQueryCondition | Zeichnet auf, wo das aktive Flag „false“ ist. |
var inc = new GlideRecord('incident');
inc.addInactiveQuery();
inc.query();
Bereichsbezogenes Äquivalent
Verwenden Sie in bereichsbezogenen Anwendungen die bereichsbezogene Methode addQuery("active","false").
GlideRecord – addJoinQuery(String table)
Fügt einen Filter hinzu, um Datensätze basierend auf einer Beziehung in einer verknüpften Tabelle zurückzugeben.
Suchen Sie beispielsweise alle Benutzer in der Datenbankgruppe (Benutzer über sys_user_grmember-Tabelle). Ein anderes Beispiel wäre das Suchen aller Probleme, denen ein Incident zugewiesen wurde (Probleme über die incident.problem_id-Beziehung).
Dies ist kein echter Datenbank-Join, sondern addJoinQuery() fügt eine Unterabfrage hinzu. Während der Ergebnissatz auf der Grundlage des Joins begrenzt ist, haben Sie nur auf die Felder der Basistabelle Zugriff (diejenigen, die sich in der Tabelle befinden, mit der GlideRecord initialisiert wurde).
Testen Sie Abfragen immer in einer Test- und Entwicklungsumgebung, bevor Sie sie in einer Produktionsinstanz bereitstellen. Eine falsch erstellte codierte Abfrage, z. B. das Hinzufügen eines ungültigen Feldnamens, führt zu einer ungültigen Abfrage. Wenn die ungültige Abfrage ausgeführt wird, wird der ungültige Teil der Abfragebedingung gelöscht und die Ergebnisse basieren auf dem gültigen Teil der Abfrage, der möglicherweise alle Datensätze aus der Tabelle zurückgibt. Die Methode insert(), update(), deleteRecord() oder deleteMultiple() kann bei schlechten Abfrageergebnissen zu Datenverlust führen.
Sie können die Systemeigenschaft glide.invalid_query.returns_no_rows auf „true“ festlegen, damit Abfragen mit ungültigen codierten Abfragen keine Datensätze zurückgeben. In einigen Fällen gibt die Abfrage möglicherweise noch Datensätze in API-Ergebnissen zurück, auch wenn glide.invalid_query.returns_no_rows auf „true“ festgelegt ist. Dies geschieht in Abfragen, in denen ein ungültiger Abfragebegriff mit einem WHERE-Operator verwendet wird. In solchen Abfragen ignoriert der Operator WHERE die ungültigen Begriffe, interpretiert den Rest der Abfrageanweisung jedoch und gibt ihn zurück. Weitere Informationen zu dieser Systemeigenschaft und ihrer Funktionalität finden Sie unter Available system properties.
| Name | Typ | Beschreibung |
|---|---|---|
| table | Zeichenfolge | Tabellenname |
| Typ | Beschreibung |
|---|---|
| GlideQueryCondition | Zeichnet auf, wo die Beziehungen übereinstimmen. |
Suchen Sie Probleme, denen ein Incident zugeordnet ist. In diesem Beispiel werden Probleme mit zugeordneten Incidents zurückgegeben. Es werden jedoch keine Werte aus den Incidents abgerufen, die als Teil der Abfrage zurückgegeben werden.
var prob = new GlideRecord('problem');
prob.addJoinQuery('incident');
prob.query();
Suchen Sie active=false-Probleme mit zugeordneten Incidents.
// 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'));
}
Bereichsbezogenes Äquivalent
Um die addJoinQuery()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: addJoinQuery().
GlideRecord – addJoinQuery(String table, String primaryField)
Fügt einen Filter hinzu, um Datensätze basierend auf einer Beziehung in einer verknüpften Tabelle zurückzugeben.
Suchen Sie beispielsweise alle Benutzer in der Datenbankgruppe (Benutzer über sys_user_grmember-Tabelle). Ein anderes Beispiel wäre das Suchen aller Probleme, denen ein Incident zugewiesen wurde (Probleme über die incident.problem_id-Beziehung).
Dies ist kein echter Datenbank-Join, sondern addJoinQuery() fügt eine Unterabfrage hinzu. Während der Ergebnissatz auf der Grundlage des Joins begrenzt ist, haben Sie nur auf die Felder der Basistabelle Zugriff (diejenigen, die sich in der Tabelle befinden, mit der GlideRecord initialisiert wurde).
Testen Sie Abfragen immer in einer Test- und Entwicklungsumgebung, bevor Sie sie in einer Produktionsinstanz bereitstellen. Eine falsch erstellte codierte Abfrage, z. B. das Hinzufügen eines ungültigen Feldnamens, führt zu einer ungültigen Abfrage. Wenn die ungültige Abfrage ausgeführt wird, wird der ungültige Teil der Abfragebedingung gelöscht und die Ergebnisse basieren auf dem gültigen Teil der Abfrage, der möglicherweise alle Datensätze aus der Tabelle zurückgibt. Die Methode insert(), update(), deleteRecord() oder deleteMultiple() kann bei schlechten Abfrageergebnissen zu Datenverlust führen.
Sie können die Systemeigenschaft glide.invalid_query.returns_no_rows auf „true“ festlegen, damit Abfragen mit ungültigen codierten Abfragen keine Datensätze zurückgeben. In einigen Fällen gibt die Abfrage möglicherweise noch Datensätze in API-Ergebnissen zurück, auch wenn glide.invalid_query.returns_no_rows auf „true“ festgelegt ist. Dies geschieht in Abfragen, in denen ein ungültiger Abfragebegriff mit einem WHERE-Operator verwendet wird. In solchen Abfragen ignoriert der Operator WHERE die ungültigen Begriffe, interpretiert den Rest der Abfrageanweisung jedoch und gibt ihn zurück. Weitere Informationen zu dieser Systemeigenschaft und ihrer Funktionalität finden Sie unter Available system properties.
| Name | Typ | Beschreibung |
|---|---|---|
| table | Zeichenfolge | Tabellenname |
| primaryField | Zeichenfolge | Primärfeld (wenn nicht sys_id). |
| Typ | Beschreibung |
|---|---|
| GlideQueryCondition | Zeichnet auf, wo die Beziehungen übereinstimmen. |
Suchen Sie Probleme, die Incidents aufweisen, indem Sie das Feld open_by am Join-Schlüssel anstelle von sys_id verwenden.
var now_GR = new GlideRecord('problem');
now_GR.addJoinQuery('incident', 'opened_by');
now_GR.query();
Bereichsbezogenes Äquivalent
Um die addJoinQuery()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: addJoinQuery().
GlideRecord – addJoinQuery(String table, String primaryField, String joinTableField)
Fügt einen Filter hinzu, um Datensätze basierend auf einer Beziehung in einer verknüpften Tabelle zurückzugeben.
Suchen Sie beispielsweise alle Benutzer in der Datenbankgruppe (Benutzer über sys_user_grmember-Tabelle). Ein anderes Beispiel wäre das Suchen aller Probleme, denen ein Incident zugewiesen wurde (Probleme über die incident.problem_id-Beziehung).
Dies ist kein echter Datenbank-Join, sondern addJoinQuery() fügt eine Unterabfrage hinzu. Während der Ergebnissatz auf der Grundlage des Joins begrenzt ist, haben Sie nur auf die Felder der Basistabelle Zugriff (diejenigen, die sich in der Tabelle befinden, mit der GlideRecord initialisiert wurde).
Testen Sie Abfragen immer in einer Test- und Entwicklungsumgebung, bevor Sie sie in einer Produktionsinstanz bereitstellen. Eine falsch erstellte codierte Abfrage, z. B. das Hinzufügen eines ungültigen Feldnamens, führt zu einer ungültigen Abfrage. Wenn die ungültige Abfrage ausgeführt wird, wird der ungültige Teil der Abfragebedingung gelöscht und die Ergebnisse basieren auf dem gültigen Teil der Abfrage, der möglicherweise alle Datensätze aus der Tabelle zurückgibt. Die Methode insert(), update(), deleteRecord() oder deleteMultiple() kann bei schlechten Abfrageergebnissen zu Datenverlust führen.
Sie können die Systemeigenschaft glide.invalid_query.returns_no_rows auf „true“ festlegen, damit Abfragen mit ungültigen codierten Abfragen keine Datensätze zurückgeben. In einigen Fällen gibt die Abfrage möglicherweise noch Datensätze in API-Ergebnissen zurück, auch wenn glide.invalid_query.returns_no_rows auf „true“ festgelegt ist. Dies geschieht in Abfragen, in denen ein ungültiger Abfragebegriff mit einem WHERE-Operator verwendet wird. In solchen Abfragen ignoriert der Operator WHERE die ungültigen Begriffe, interpretiert den Rest der Abfrageanweisung jedoch und gibt ihn zurück. Weitere Informationen zu dieser Systemeigenschaft und ihrer Funktionalität finden Sie unter Available system properties.
| Name | Typ | Beschreibung |
|---|---|---|
| table | Zeichenfolge | Tabellenname |
| primaryField | Zeichenfolge | Primärfeld (wenn nicht sys_id). |
| joinTableField | Zeichenfolge | Feld, das die Tabellen verbindet (wenn nicht sys_id) |
| Typ | Beschreibung |
|---|---|
| GlideQueryCondition | Zeichnet auf, wo die Beziehungen übereinstimmen. |
Suchen Sie nach Problemen mit zugeordneten Incidents, bei denen der caller_id-Feldwert des Incident dem des opened_by-Field des Problems entspricht.
var now_GR = new GlideRecord('problem');
now_GR.addJoinQuery('incident', 'opened_by', 'caller_id');
now_GR.query();
Bereichsbezogenes Äquivalent
Um die addJoinQuery()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: addJoinQuery().
GlideRecord – addNotNullQuery(String fieldName)
Fügt einen Filter hinzu, um Datensätze zurückzugeben, bei denen das angegebene Feld nicht NULL ist.
| Name | Typ | Beschreibung |
|---|---|---|
| fieldName | Zeichenfolge | Der Feldname. |
| Typ | Beschreibung |
|---|---|
| GlideQueryCondition | GlideQueryCondition von Datensätzen, bei denen das Parameterfeld nicht NULL ist. |
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
}
Bereichsbezogenes Äquivalent
Um die addNotNullQuery()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: addNotNullQuery().
GlideRecord – addNullQuery(String fieldName)
Fügt einen Filter hinzu, um Datensätze zurückzugeben, bei denen das angegebene Feld NULL ist.
| Name | Typ | Beschreibung |
|---|---|---|
| fieldName | Zeichenfolge | Der Feldname. |
| Typ | Beschreibung |
|---|---|
| GlideQueryCondition | GlideQueryCondition von Datensätzen, bei denen das angegebene Feld NULL ist. |
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
}
Bereichsbezogenes Äquivalent
Um die addNullQuery()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: addNullQuery().
GlideRecord – addQuery(String name, Object operator, Object value)
Bietet die Möglichkeit, eine Anforderung zu erstellen, die bei ihrer Ausführung die Zeilen der angegebenen Tabelle zurückgibt, die der Anforderung entsprechen.
Wenn Sie mit SQL vertraut sind, ähnelt diese Methode der „here“-Klausel. Sie können einen oder mehrere addQuery() -Aufrufe in einer einzigen Abfrage durchführen. Bei dieser Methode werden die Abfragen mit UND verknüpft. Wenn eine der Abfrageanweisungen mit ODER verknüpft werden muss, verwenden Sie die Klasse GlideQueryCondition.
addQuery() wird normalerweise mit drei Parametern aufgerufen; Tabellenfeld, Operator und Vergleichswert. Es kann nur mit zwei Parametern aufgerufen werden, Tabellenfeld und Vergleichswert, z. B. myObj.addQuery('category','Hardware');. In diesem Fall wird davon ausgegangen, dass der Operator „equal to“ ist.
Weitere Informationen zur Verwendung von Abfragen finden Sie unter Tabellen in Skripten abfragen.
Testen Sie Abfragen immer in einer Test- und Entwicklungsumgebung, bevor Sie sie in einer Produktionsinstanz bereitstellen. Eine falsch erstellte codierte Abfrage, z. B. das Hinzufügen eines ungültigen Feldnamens, führt zu einer ungültigen Abfrage. Wenn die ungültige Abfrage ausgeführt wird, wird der ungültige Teil der Abfragebedingung gelöscht und die Ergebnisse basieren auf dem gültigen Teil der Abfrage, der möglicherweise alle Datensätze aus der Tabelle zurückgibt. Die Methode insert(), update(), deleteRecord() oder deleteMultiple() kann bei schlechten Abfrageergebnissen zu Datenverlust führen.
Sie können die Systemeigenschaft glide.invalid_query.returns_no_rows auf „true“ festlegen, damit Abfragen mit ungültigen codierten Abfragen keine Datensätze zurückgeben. In einigen Fällen gibt die Abfrage möglicherweise noch Datensätze in API-Ergebnissen zurück, auch wenn glide.invalid_query.returns_no_rows auf „true“ festgelegt ist. Dies geschieht in Abfragen, in denen ein ungültiger Abfragebegriff mit einem WHERE-Operator verwendet wird. In solchen Abfragen ignoriert der Operator WHERE die ungültigen Begriffe, interpretiert den Rest der Abfrageanweisung jedoch und gibt ihn zurück. Weitere Informationen zu dieser Systemeigenschaft und ihrer Funktionalität finden Sie unter Available system properties.
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Zeichenfolge | Tabellenfeldname oder Pfad zu einem Attribut in einem dynamischen Attributspeicherelement. Format des dynamischen Pfads: dyn_att_field->group_name->attribute_name
Weitere Informationen zu dynamischen Attributen finden Sie unter Dynamic Schema. |
| operator | Objekt | Abfrageoperator. Die verfügbaren Werte sind vom Datentyp des value-Parameters abhängig. Zahlen:
Zeichenfolgen (in Großbuchstaben):
Hinweis: Verwenden Sie CONTAINS anstelle des LIKE-Operators. Dynamische Schemaoperatoren:
|
| Wert | Objekt | Wert, nach dem abgefragt werden soll (Groß- und Kleinschreibung wird nicht berücksichtigt). |
| Typ | Beschreibung |
|---|---|
| GlideQueryCondition | Verweis auf die GlideQueryCondition, die dem GlideRecord hinzugefügt wurde. |
Das folgende Beispiel zeigt, wie diese Methode aufgerufen wird.
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();
}
Das folgende Beispiel zeigt, wie der Operator IN verwendet wird.
var que = new GlideRecord('incident');
que.addQuery('number','IN','INC00001,INC00002');
que.query();
while(que.next()) {
//do something....
}
Das folgende Beispiel zeigt, wie diese Methode zur Verwendung von Attributen in einem dynamischen Attributspeicher aufgerufen wird.
var gr_Inc = new GlideRecord('incident');
gr_Inc.addQuery('inc_dynamic_schema->cars->avg_mpg', 'GT_FIELD', 'inc_dynamic_schema2->cars->avg_mpg');
gr_Inc.query();
while(gr_Inc.next()) {
gs.info(gr_Inc.number + " Gas Mileage 1: " + gr_Inc.getDynamicAttributeValue('inc_dynamic_schema->cars->avg_mpg') + " GT_FIELD Gas Mileage 2 :" + gr_Inc.getDynamicAttributeValue('inc_dynamic_schema2->cars->avg_mpg'));
}
Bereichsbezogenes Äquivalent
Um die addQuery()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: addQuery().
GlideRecord – addValue(Zeichenfolgenfeld, Zahlenwert)
Stellt atomare Additions- und Subtraktionsvorgänge für ein angegebenes Zahlenfeld auf Datenbankebene für das aktuelle GlideRecord-Objekt bereit.
Normalerweise wird ein GlideRecord-Objekt als ein Datensatz in einer Datenbank geschrieben. Einzelne Feldwerte werden wie definiert gespeichert. Bei Code, der einem GlideRecord-Feld einen Wert hinzufügt, wird das Feld einfach mit dem neuen Wert in der Datenbank gespeichert, anstatt es atomar zu erhöhen.
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" Wenn ein anderer Benutzer gleichzeitig identischen Code ausführt, anstatt dass die beiden Vorgänge jeweils 1 zu u_count hinzufügen, hat dies den Nettoeffekt, dass u_count nur 2 enthält, wobei die Aktualisierung eines Vorgangs tatsächlich verloren geht.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 Wie setValue()werden auch addValue() -Änderungen erst nach einem nachfolgenden Aufruf von update() oder insert()in der Datenbank wirksam. Wenn insert() aufgerufen wird, wird das angegebene Feld mit dem Parameter value initialisiert, der an addValue()übergeben wird.
| Name | Typ | Beschreibung |
|---|---|---|
| field | Zeichenfolge | Der Name des zu ändernden Felds in diesem GlideRecord. Wenn das zugeordnete Feld kein numerischer Typ ist, wird der Vorgang ignoriert. |
| Wert | Nummer | Der Betrag, der dem Wert hinzugefügt werden soll, wenn der Datensatz gespeichert wird. Um einen Subtraktionsvorgang auszuführen, übergeben Sie einfach einen negativen Wert. |
| Typ | Beschreibung |
|---|---|
| void |
Zeigt einen hinzugefügten Wert an.
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);
Ausgabe: 2
Zeigt einen Wert an, der subtrahiert wird.
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);
Ausgabe: 3
GlideRecord – applicationEncodedQuery(String queryString)
Legt die Werte der angegebenen codierten Abfragebegriffe fest und wendet sie auf den aktuellen GlideRecord an.
| Name | Typ | Beschreibung |
|---|---|---|
| queryString | Zeichenfolge | Codierte Abfrage, die auf den aktuellen GlideRecord angewendet werden soll. |
| Typ | Beschreibung |
|---|---|
| Keine |
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(String template)
Wenden Sie einen Vorlagendatensatz aus der Vorlagentabelle [sys_template] auf den aktuellen Datensatz an. Wenn die angegebene Vorlage nicht gefunden wird, wird keine Aktion ausgeführt.
| Name | Typ | Beschreibung |
|---|---|---|
| template | Zeichenfolge | Name einer Vorlage aus der Tabelle „Vorlagen“ [sys_template]. |
| Typ | Beschreibung |
|---|---|
| void |
var rec1 = new GlideRecord("incident");
rec1.initialize();
rec1.applyTemplate("my_incident_template");
rec1.insert();
GlideRecord – autoSysFields(Boolean e)
Aktiviert oder deaktiviert die Aktualisierung auf die Felder „sys_updated_by“, „sys_updated_on“, „sys_mod_count“, „sys_created_by“ und „sys_created_on“. Dies wird häufig zum manuellen Aktualisieren von Feldwerten in einem Datensatz verwendet, während historische Informationen unverändert bleiben.
| Name | Typ | Beschreibung |
|---|---|---|
| e | Boolean | Bei „false“ werden Updates auf „sys_updated_by“, „sys_updated_on“, „sys_mod_count“, „sys_created_by“ und „sys_created_on“ deaktiviert. |
| Typ | Beschreibung |
|---|---|
| void |
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()
Bestimmt, ob die Zugriffskontrollregeln (einschließlich der Benutzerrolle) das Einfügen neuer Datensätze in diese Tabelle ermöglichen.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob die Rollen des Anwenders das Erstellen von Datensätzen in dieser Tabelle zulassen. Mögliche Werte:
|
Dieses Beispiel zeigt, ob Datensätze in der Tabelle „headed_plan“ erstellt werden können.
canCreateBenefitPlan : function() {
var now_GR = new GlideRecord('benefit_plan');
return now_GR.canCreate();
}
Bereichsbezogenes Äquivalent
Um die canCreate()-Methode in einer Bereichsanwendung zu verwenden, verwenden Sie die entsprechende Bereichsmethode: canCreate().
GlideRecord – canDelete()
Bestimmt, ob die Zugriffskontrollregeln (einschließlich der Rolle des Benutzers) das Löschen von Datensätzen in dieser Tabelle zulassen.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob die Rollen des Anwenders das Löschen von Datensätzen in dieser Tabelle zulassen. Gültige Werte:
|
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);
Bereichsbezogenes Äquivalent
Um die canDelete()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: canDelete().
GlideRecord – canRead()
Gibt an, ob die Zugriffssteuerungsregeln (ACLs) dem aktuellen Anwender erlauben, den aktuellen Datensatz in der zugehörigen GlideRecord-Tabelle zu lesen. Diese Methode wertet alle verfügbaren ACLs für die spezifische Ressource aus.
Weitere Informationen zu ACLs finden Sie unter Auswertungsreihenfolge für Zugriffssteuerungen.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob die Rollen des Anwenders das Lesen des aktuellen Datensatzes zulassen. Gültige Werte:
|
In diesem Beispiel wird gezeigt, wie die Incident-Tabelle [incident] durchlaufen und überprüft wird, ob der Benutzer für die einzelnen Datensätze über Leserechte verfügt.
var grTable = new GlideRecord('incident');
grTable.query();
while (grTable.next()) {
if (grTable.canRead())
…
}
Bereichsbezogenes Äquivalent
Um die canRead()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: canRead().
GlideRecord – canWrite()
Bestimmt, ob die Zugriffskontrollregeln (einschließlich der Rolle des Benutzers) Updates der Datensätze in dieser Tabelle zulassen.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob die Rollen des Anwenders das Schreiben von Datensätzen in dieser Tabelle zulassen. Gültige Werte:
|
Dieses Beispiel zeigt, ob Datensätze in die Tabelle benefit_plan geschrieben werden können.
canWriteBenefitPlan : function() {
var now_GR = new GlideRecord('benefit_plan');
return now_GR.canWrite();
}
Bereichsbezogenes Äquivalent
Um die canWrite()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: canWrite().
GlideRecord – changes()
Bestimmt, ob sich eines der Felder im Datensatz geändert hat.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob im angegebenen Datensatz Änderungen vorhanden sind. Mögliche Werte:
|
In diesem Beispiel wird gezeigt, wie überprüft wird, ob Änderungen in einem Incident-Datensatz vorhanden sind.
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");
}
Bereichsbezogenes Äquivalent
Um diese Funktionalität in einer bereichsbezogenen Anwendung implementieren, fügen Sie folgenden Code hinzu:
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 – wählenFenster(Number firstRow, Nummer lastRow, Boolesche Kraft Anzahl)
Legt einen Zeilenbereich fest, der von nachfolgenden Abfragen zurückgegeben werden soll.
| Name | Typ | Beschreibung |
|---|---|---|
| firstRow | Nummer | Nullbasierter Index der Startzeile für den Bereich, einschließlich. (Ein Wert von 0 gibt die erste Zeile zurück.) |
| letzte Reihe | Nummer | Nullbasierter Index der Endzeile für den Bereich, ausschließlich. Wenn beispielsweise firstRow = 1 und lastRow = 5 ist, werden vier Datensätze zurückgegeben (2–5). |
| forceCount | Boolean | Optional. Kennzeichnung, die angibt, ob eine Abfrage der Zeilenanzahl erzwungen werden soll. In den meisten Implementierungen dieses Aufrufs wird die Zeilenanzahl durchgeführt. Es gibt einige Sonderfälle, z. B. Textsuchen, bei denen keine Zeilenzählung durchgeführt wurde. Durch das Festlegen dieser Kennzeichnung wird sichergestellt, dass die Zeilenanzahl auftritt. Gültige Werte:
Standardwert: false |
| Typ | Beschreibung |
|---|---|
| void |
In diesem Beispiel wird gezeigt, wie die Datensätze 3 und 4 aus der Incident-Tabelle [incident] zurückgegeben werden.
var now_GR = new GlideRecord('incident');
now_GR.orderBy('number');
now_GR.chooseWindow(2, 4);
now_GR.query();
while (now_GR.next()) {
gs.info(now_GR.getValue('number') + ' is within window');
}
Ausgabe:
*** Script: INC0000003 is within window
*** Script: INC0000004 is within window
GlideRecord – deleteMultiple()
Löscht alle Datensätze, die die Abfrage erfüllen.
Diese Methode löscht keine Anhänge.
Dot-Walking wird für diese Methode nicht unterstützt. Bei Verwendung der deleteMultiple()Funktion für referenzierte Tabellen werden alle Datensätze in der Tabelle gelöscht. Bei der Verwendung von deleteRecord() zum Kaskadieren des Löschvorgangs werden vorherige Aufrufe bei setWorkflow() für dasselbe GlideRecord-Objekt auch ignoriert.
Verwenden Sie nicht deleteMultiple() für Tabellen mit Währungsfeldern. Löschen Sie jeden Datensatz einzeln. Verwenden Sie diese Methode zudem nicht mit den Methoden chooseWindow() oder setLimit(), wenn Sie mit großen Tabellen arbeiten. Die Methode setLimit() begrenzt nicht die Anzahl der Datensätze, die mit deleteMultiple()gelöscht werden. Alle von der Abfrage zurückgegebenen Datensätze werden unabhängig von setLimit()gelöscht.
Die Systemeigenschaft glide.db.forced.chunk.threshold legt den Schwellenwert fest, über den das Löschen und Aktualisieren von Blockdatensätzen erzwungen wird. Das Chunking verhindert, dass das Löschen von Primärschlüsseln in großen Tabellen Replikationsprobleme verursacht. Weitere Informationen finden Sie unter Available system properties.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Keine |
In diesem Beispiel wird gezeigt, wie alle inaktiven Datensätze aus der Incident-Tabelle gelöscht werden.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('active','false');
now_GR.query();
now_GR.deleteMultiple();
Bereichsbezogenes Äquivalent
Um die deleteMultiple()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: deleteMultiple().
GlideRecord – deleteRecord()
Löscht einen einzelnen Datensatz.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob der Datensatz erfolgreich gelöscht wurde. Mögliche Werte:
|
In diesem Beispiel wird gezeigt, wie alle inaktiven Datensätze aus der Incident-Tabelle gelöscht werden.
var rec = new GlideRecord('incident');
rec.addQuery('active',false);
rec.query();
while (rec.next()) {
gs.info('Inactive incident ' + rec.number + ' deleted');
rec.deleteRecord();
}
Ausgabe:
Inactive incident INC0010010 deleted
Inactive incident INC0010011 deleted
In diesem Beispiel wird gezeigt, wie ein Datensatz unmittelbar nach dem Einfügen aus der Incident-Tabelle gelöscht wird. Der Incident- GlideRecord muss nach dem Einfügen neu geladen werden, bevor er gelöscht werden kann.
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
Ausgabe:
true
Bereichsbezogenes Äquivalent
Um die deleteRecord()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: deleteRecord().
GlideRecord – disableSysIdInOptimization()
Deaktiviert die Standardoptimierung, die verhindert, dass eine zusätzliche Datenbankabfrage ausgeführt wird, wenn ein Anwender eine große Anzahl von sys_ids übergibt, z. B. grIncident.addQuery('sys_id', 'IN', listOf200SysIds).
Diese Methode wirkt sich nur auf den GlideRecord aus, für den sie aufgerufen wird. Um die sys_id-Grenzwertoptimierung für alle GlideRecords zu ändern, passen Sie den Wert in der Systemeigenschaft glide.db.first_pass_sys_id_list_size.max an (Standard: 100).
Wenn Sie diese Methode nicht aufrufen oder die Systemeigenschaft glide.db.first_pass_sys_id_list_size.max anpassen und eine Liste übergeben, die mehr sys_id-Einträge enthält, als in glide.db.first_pass_sys_id_list_size.maxdefiniert sind, ist der von GlideRecord.getRowCount() zurückgegebene Wert möglicherweise falsch.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie Sie mit der Methode disableSysIdInOptimiation() die sys_id-Grenzwertoptimierung deaktivieren, wenn Sie eine sys_id-Liste für Incidents mit 200 Einträgen übergeben.
var listOf200SysIds = [ ... ]; // 200 comma separated sys_ids
var grIncident = new GlideRecord('incident');
grIncident.addQuery('sys_id', 'IN', listOf200SysIds);
grIncident.disableSysIdInOptimization(); // Rowcount could be incorrect without this method call
grIncident.query();
if (grIncident.next())
gs.info("Rowcount: " + grIncident.getRowCount());
Ausgabe:
Rowcount: 200
GlideRecord – find(String columnName, String value)
Gibt „true“ zurück, wenn für einen Datensatz in der angegebenen Spalte ein übereinstimmender Wert vorhanden ist. Wenn er gefunden wird, wird auch zum ersten übereinstimmenden Datensatz gegangen, wobei im Wesentlichen next() bis zur Rückgabe des Datensatzes ausgeführt wird.
| Name | Typ | Beschreibung |
|---|---|---|
| columnName | Zeichenfolge | Zu suchender Feldname. |
| Wert | Zeichenfolge | Wert, nach dem im angegebenen Feld gesucht werden soll. |
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob ein Datensatz in der aktuellen Tabelle einen übereinstimmenden Wert im angegebenen Feld hat. Mögliche Werte:
|
Dieses Beispiel zeigt, wie Sie in der Incident-Tabelle nach einem Datensatz mit „Kritisch“ im Kurzbeschreibungsfeld suchen.
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");
}
Ausgabe
An incident with the specified field value was found
Found in the following record: 552c48888c033300964f4932b03eb092
GlideRecord – get(Object name, Object value)
Gibt den angegebenen Datensatz im aktuellen GlideRecord-Objekt zurück.
Diese Methode akzeptiert einen oder zwei Parameter. Wenn nur ein einzelner Parameter übergeben wird, geht die Methode davon aus, dass es sich um die sys_id des gewünschten Datensatzes handelt. Wenn der Wert nicht gefunden wird, wird versucht, den Wert mit dem Anzeigewert abzugleichen. Wenn zwei Parameter übergeben werden, ist der erste der Name der Spalte im zu durchsuchenden GlideRecord. Der zweite ist der Wert, nach dem gesucht werden soll. Wenn mehrere Datensätze gefunden werden, verwenden Sie next(), um auf die zusätzlichen Datensätze zuzugreifen.
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Objekt | Optional. Name der instanziierten GlideRecord-Spalte für die Suche nach dem angegebenen Parameter value. Wenn nur ein einziger Parameter übergeben wird, geht die Methode davon aus, dass dieser Parameter die sys_id ist. |
| Wert | Objekt | Abzugleichender Wert. Bei berechneten Feldern wird der Wert unverändert abgeglichen, anstatt eine Berechnung mit einem geskripteten Standardwert für ein Feld im Datensatz auszuführen. |
| Typ | Beschreibung |
|---|---|
| Boolean | Gibt an, ob der angeforderte Datensatz gefunden wurde. Mögliche Werte:
|
In diesem Beispiel wird ein Incident-Datensatz durch Übergabe der sys_id abgerufen.
var grIncident = new GlideRecord('incident');
var returnValue = grIncident.get('99ebb4156fa831005be8883e6b3ee4b9');
gs.info(returnValue); // logs true or false
gs.info(grIncident.number); // logs Incident Number
In diesem Beispiel wird ein Incident-Datensatz abgerufen, indem in der Spalte, nach der gesucht werden soll, der Wert übergeben wird, nach dem gesucht werden soll.
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
Bereichsbezogenes Äquivalent
Um die get()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: get().
GlideRecord – getAttribute(String fieldName)
Gibt die Wörterbuchattribute im angegebenen Feld zurück.
| Name | Typ | Beschreibung |
|---|---|---|
| fieldName | Zeichenfolge | Feldname, für den die Wörterbuchattribute zurückgegeben werden sollen |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Wörterbuchattribute |
Dieses Beispiel zeigt, wie die Wörterbuchattribute für „tree_picker“ zurückgegeben werden.
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"));
}
}
Bereichsbezogenes Äquivalent
Um die getAttribute()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: getAttribute().
GlideRecord – getClassDisplayValue()
Gibt die Bezeichnung der Tabelle zurück.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Bezeichnung, die die Tabelle identifiziert. |
In diesem Beispiel wird die Bezeichnung der übergebenen Tabelle gedruckt.
// Display the incident table label
var now_GR = new GlideRecord("incident");
var value = now_GR.getClassDisplayValue();
gs.info("The table label is " + value + ".");
Ausgabe:
The table label is Incident.
Bereichsbezogenes Äquivalent
Um die getClassDisplayValue()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: getClassDisplayValue().
GlideRecord – getDisplayValue(String name)
Ruft den Anzeigewert für den aktuellen Datensatz oder den Anzeigewert eines Attributs in einem dynamischen Attributspeicher ab.
Display values werden basierend auf dem tatsächlichen Wert in der Datenbank und den Anwender- oder Systemeinstellungen und -voreinstellungen manipuliert.
- Auswahlfelder: Der Datenbankwert kann eine Zahl sein, der Anzeigewert ist jedoch aussagekräftiger.
- Datumsfelder: Der Datenbankwert liegt im UTC-Format vor, während der Anzeigewert auf der Zeitzone des Benutzers basiert.
- Verschlüsselter Text: Der Datenbankwert ist verschlüsselt, während der Anzeigewert entsprechend dem Verschlüsselungskontext des Benutzers unverschlüsselt ist.
- Referenzfelder: Der Datenbankwert ist sys_id, aber der Anzeigewert ist das Anzeigefeld des referenzierten Datensatzes.
Weitere Informationen zu dynamischen Attributen finden Sie unter Dynamic Schema.
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Zeichenfolge | Optional. Nur erforderlich, wenn der Anzeigewert für ein dynamisches Attribut angefordert wird. Pfad zu einem Attribut in einem abzurufenden dynamischen Schema. Format des dynamischen Pfads: dyn_att_field->group_name->attribute_name
|
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Anzeigewert für den aktuellen Datensatz oder das angegebene Element. |
In diesem Beispiel wird der Anzeigewert eines angegebenen Incident-Datensatzes in das Protokoll geschrieben.
var now_GR = new GlideRecord('incident');
now_GR.get('sys_id','<sys_id>');
gs.info(now_GR.getDisplayValue());
Ausgabe:
INC0000050
In diesem Beispiel wird gezeigt, wie der Anzeigewert eines Attributs in einem dynamischen Attributspeicherelement abgerufen wird.
var gr_AppTab = new GlideRecord('application_table');
gr_AppTab.setValue('dyn_att_field->group->attr', 42);
gr_AppTab.setDisplayValue('dyn_att_field->group->attr2, true);
gr_AppTab.update();
gs.info('Attr value: ' +
gr_AppTab.getDisplayValue('dyn_att_field->group->attr);
gs.info('Attr2 value: ' +
gr_AppTab.getDisplayValue('dyn_att_field->group->attr2);
Ausgabe:
Attr value: System error
Attr2 value: true
Bereichsbezogenes Äquivalent
Um die getDisplayValue()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: getDisplayValue().
GlideRecord – getDynamicAttribute(String fullPath)
Gibt das GlideElementDynamicAttribute-Objekt für den angegebenen dynamischen Attributspeicherpfad zurück.
Weitere Informationen zu dynamischen Attributen finden Sie unter Dynamic Schema.
| Name | Typ | Beschreibung |
|---|---|---|
| fullPath | Zeichenfolge | Pfad zum Suchen des gewünschten dynamischen Attributs. Format des dynamischen Pfads: dyn_att_field->group_name->attribute_name
|
| Typ | Beschreibung |
|---|---|
| Objekt | GlideElementDynamicAttribute-Objekt, das das angegebene dynamische Attribut enthält. Wenn der Parameter fullPath ungültig ist, wird null zurückgegeben. |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
var gr_Inc = new GlideRecord('incident');
gr_Inc.get('number', 'INC0009009');
gr_Inc.getDynamicAttribute('attr_store->car->color').setValue('Blue');
gr_Inc.update();
gr_Inc = new GlideRecord('incident');
gr_Inc.get('number', 'INC0009009');
gs.info(gr_Inc.getDynamicAttribute('attr_store', 'car->color'));
*** Script: BlueGlideRecord – getDynamicAttribute(String dynamicAttributeField, Zeichenfolge groupAttrPath)
Gibt ein GlideElementDynamicAttribute-Objekt zurück, das das dynamische Attribut enthält, das sich im angegebenen Tabellenfeld und Attributpfad befindet.
| Name | Typ | Beschreibung |
|---|---|---|
| dynamischesAttributFeld | Zeichenfolge | Name des Felds in der Tabelle, das das dynamische Attribut enthält. |
| groupAttrPath | Zeichenfolge | Attributpfad zum Suchen des zugeordneten dynamischen Schemaattributs. Format: "group_name->attr_name"
Beispiel: |
| Typ | Beschreibung |
|---|---|
| Objekt | GlideElementDynamicAttribute-Objekt, das das angegebene dynamische Attribut enthält. Wenn einer der Parameter dynamicAttributeField oder groupAttrPath ungültig ist, wird null zurückgegeben. |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
var gr_Inc = new GlideRecord('incident');
gr_Inc.get('number', 'INC0009009');
gr_Inc.getDynamicAttribute('attr_store->car->color').setValue('Blue');
gr_Inc.update();
gr_Inc = new GlideRecord('incident');
gr_Inc.get('number', 'INC0009009');
gs.info(gr_Inc.getDynamicAttribute('attr_store', 'car->color'));
*** Script: BlueGlideRecord – getDynamicAttributeValue(String fullPath)
Gibt den Wert des dynamischen Attributs zurück, das sich unter einem angegebenen Pfad befindet.
| Name | Typ | Beschreibung |
|---|---|---|
| fullPath | Zeichenfolge | Pfad zum Suchen des gewünschten dynamischen Attributs. Format des dynamischen Pfads: dyn_att_field->group_name->attribute_name
|
| Typ | Beschreibung |
|---|---|
| Objekt | Wert des dynamischen Attributs, das sich unter dem angegebenen Pfad befindet. Wenn der Parameter fullPath ungültige Daten enthält oder der angegebene Attributwert nicht zu den unterstützten Datentypen gehört, wird null zurückgegeben. |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store->car->time_of_purchase', '2020-05-13 13:52:44');
gr1.update();
// Then retrieve the value of the attribute on the same record
var gr2 = new GlideRecord('incident');
gr2.get('number', 'INC0009009');
gs.info("Time of Purchase Value (UTC): " + gr2.getDynamicAttributeValue('attribute_store->car->time_of_purchase'));
gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store->car->time_of_purchase'));
Ausgabe:
*** Script: Time of Purchase Value (UTC): 2020-05-13 13:52:44
*** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44
GlideRecord – getDynamicAttributeValue(String dynamicAttributeField, Zeichenfolge groupAttrPath)
Gibt den Wert des dynamischen Attributs zurück, das sich in einem angegebenen Feld in der aktuellen Tabelle und einem angegebenen Attributpfad befindet.
| Name | Typ | Beschreibung |
|---|---|---|
| dynamischesAttributFeld | Zeichenfolge | Name des Felds in der Tabelle, das das dynamische Attribut enthält. |
| groupAttrPath | Zeichenfolge | Attributpfad zum Suchen des zugeordneten dynamischen Schemaattributs. Format: "group_name->attr_name"
Beispiel: |
| Typ | Beschreibung |
|---|---|
| Objekt | Wert des dynamischen Attributs, das sich unter dem angegebenen Pfad befindet. Wenn einer der Parameter dynamicAttributeField oder groupAttrPath ungültig ist, wird null zurückgegeben. |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store', 'car->time_of_purchase', '2020-05-13 13:52:44');
gr1.update();
// Then retrieve the value of the attribute on the same record
var gr2 = new GlideRecord('incident');
gr2.get('number', 'INC0009009');
gs.info("Time of Purchase Value (UTC): " + gr2.getDynamicAttributeValue('attribute_store', 'car->time_of_purchase'));
gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store', 'car->time_of_purchase'));
Ausgabe:
*** Script: Time of Purchase Value (UTC): 2020-05-13 13:52:44
*** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44
GlideRecord – getDynamicAttributeDisplayValue(String fullPath)
Gibt den Anzeigewert des dynamischen Attributs zurück, das sich unter dem angegebenen Pfad befindet.
| Name | Typ | Beschreibung |
|---|---|---|
| fullPath | Zeichenfolge | Pfad zum Suchen des gewünschten dynamischen Attributs. Format des dynamischen Pfads: dyn_att_field->group_name->attribute_name
|
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Anzeigewert des dynamischen Attributs, das sich unter dem angegebenen Pfad befindet. Wenn der Parameter fullPath ungültig ist, wird null zurückgegeben. |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store->car->time_of_purchase', '2020-05-13 13:52:44');
gr1.update();
// Then retrieve the value of the attribute on the same record
var gr2 = new GlideRecord('incident');
gr2.get('number', 'INC0009009');
gs.info("Time of Purcahse Value (UTC): " + gr2.getDynamicAttributeValue('attribute_store->car->time_of_purchase'));
gs.info("Time of Purcahse DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store->car->time_of_purchase'));
Ausgabe:
*** Script: Time of Purcahse Value (UTC): 2020-05-13 13:52:44
*** Script: Time of Purcahse DisplayValue (PST): 2020-05-13 06:52:44
GlideRecord – getDynamicAttributeDisplayValue(String dynamicAttributeField, Zeichenfolge groupAttrPath)
Gibt den Anzeigewert des dynamischen Attributs zurück, das sich in einem angegebenen Tabellenfeld und Attributpfad befindet.
| Name | Typ | Beschreibung |
|---|---|---|
| dynamischesAttributFeld | Zeichenfolge | Name des Felds in der Tabelle, das das dynamische Attribut enthält. |
| groupAttrPath | Zeichenfolge | Attributpfad zum Suchen des zugeordneten dynamischen Schemaattributs. Format: "group_name->attr_name"
Beispiel: |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Anzeigewert des dynamischen Attributs, das sich unter dem angegebenen Pfad befindet. Wenn einer der Parameter dynamicAttributeField oder groupAttrPath ungültig ist, wird null zurückgegeben. |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store', 'car->time_of_purchase', '2020-05-13 13:52:44');
gr1.update();
// Then retrieve the value of the attribute on the same record
var gr2 = new GlideRecord('incident');
gr2.get('number', 'INC0009009');
gs.info("Time of Purchase Value (UTC): " + gr2.getDynamicAttributeValue('attribute_store', 'car->time_of_purchase'));
gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store', 'car->time_of_purchase'));
Ausgabe:
*** Script: Time of Purchase Value (UTC): 2020-05-13 13:52:44
*** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44
GlideRecord – getED()
Gibt den Deskriptor des Elements zurück.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| GlideElementDescriptor | Der Deskriptor des Elements. |
In diesem Beispiel wird gezeigt, wie das Namensfeld für einen Incident-GlideRecord abgerufen wird.
grInc = new GlideRecord('incident');
grInc.getActiveQuery();
grInc.query();
if (grInc.next())
gs.info("Table Descriptor is - " + grInc.getED().getName());
Ausgabe:
Table Descriptor is - incident
Bereichsbezogenes Äquivalent
Um die getED()-Methode in einer Bereichsanwendung zu verwenden, verwenden Sie die entsprechende Bereichsmethode: getED().
GlideRecord – getElement(String fieldName)
Ruft das GlideElement für ein angegebenes Feld ab.
Der von dieser Methode zurückgegebene Wert ist ein vollständiges GlideElement-Objekt. Die Ergebnisse entsprechen dem Dot-Walking eines Feldwerts. Zum Beispiel liefert now_GR.getElement('short_description') dasselbe Ergebnis wie nowGR.short_description.
In den meisten Fällen sollten Sie kein Dot-Walking verwenden, um Werte aus einem Datensatz abzurufen. Beim Dot-Walking wird das gesamte Objekt anstelle des Feldwerts abgerufen. Das Abrufen des Objekts verbraucht mehr Speicher und kann zu unerwünschten Ergebnissen führen, wenn es in Arrays oder in Serviceportalverwendet wird.
Anstatt das gesamte Objekt abzurufen, können Sie eine der folgenden Methoden verwenden, um die Feldwerte zu kopieren:
var mgr = current.caller_id.manager.toString();Siehe auch: GlideElement – toString().
| Name | Typ | Beschreibung |
|---|---|---|
| fieldName | Zeichenfolge | Spaltenname, für den das GlideElement-Objekt zurückgegeben werden soll. |
| Typ | Beschreibung |
|---|---|
| GlideElement | Das GlideElement für die angegebene Spalte des aktuellen Datensatzes. Jedes Objekt beschreibt ein Feld im aktuellen GlideRecord. |
Dieses Beispiel zeigt, wie Sie das GlideElement-Objekt für eine übergebene Tabelle abrufen und mit den erwarteten Systemmetadatenwerten vergleichen.
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]);
}
}
Bereichsbezogenes Äquivalent
Um die getElement()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: getElement().
GlideRecord – getEncodedQuery()
Ruft die Abfragebedingung des aktuellen Ergebnissatzes als codierte Abfragezeichenfolge ab.
Einzelheiten finden Sie unter Codierte Abfragezeichenfolgen .
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge |
In diesem Beispiel wird gezeigt, wie Sie die aktuelle codierte Abfrage abrufen, um sie später zum Erstellen einer Lese-ACL-Rolle zu verwenden.
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);
}
}
Bereichsbezogenes Äquivalent
Um die getEncodedQuery()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: getEncodedQuery().
GlideRecord – getEscapedDisplayValue()
Ruft den Feldwert für das Anzeigefeld des aktuellen Datensatzes ab und fügt Escape-Zeichen für die Verwendung in Jelly-Skripts hinzu.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Escape-Wert des Anzeigefelds der aktuellen Tabelle. |
In diesem Beispiel wird gezeigt, wie der mit Escape-Zeichen versehene Anzeigewert „user_name“ aus der Tabelle „Benutzer“ [sys_user] abgerufen wird.
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);
Ausgabe:
Name: Michael J'ones
Escaped name: Michael J\'ones
GlideRecord – getFields()
Ruft eine Java-ArrayList von Feldern im aktuellen Datensatz ab.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Java-ArrayList | Felder im aktuellen Datensatz |
// 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()
Ruft die Bezeichnung des Felds ab.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Bezeichnung des Felds |
In diesem Beispiel wird gezeigt, wie Sie eine Bezeichnung eines Fragenfelds in der Tabelle „Angefordertes Element“ abrufen und die Bezeichnung und den Anzeigenamen drucken.
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");
}
}
}
Bereichsbezogenes Äquivalent
Um die getLabel()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: getLabel().
GlideRecord – getLink(Boolean noStack)
Ruft den Link für den aktuellen Datensatz ab.
| Name | Typ | Beschreibung |
|---|---|---|
| noStack | Boolean | Kennzeichnung, die angibt, ob der generierte Link an das Ende der URL angehängt werden soll. Beispiel: &sysparm_stack=[tablename]_list.do? sysparm_query=active=wahrGültige Werte:
Standardwert: false |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | URL des aktuellen Datensatzes. |
In diesem Beispiel wird nach Anhängen gesucht und der Link hinzugefügt, falls welche gefunden werden.
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();
}
}
Bereichsbezogenes Äquivalent
Um die getLink()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: getLink().
GlideRecord – getLocation()
Ruft die Zeilennummer des aktuellen Datensatzes in der Tabelle ab.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Nummer | Nullbasierte Zeilennummer des aktuellen Datensatzes in der Tabelle. |
In diesem Beispiel wird gezeigt, wie überprüft wird, ob ein Datensatz in der Incident-Tabelle nicht ordnungsgemäß abgerufen wurde, indem die Datensatzanzahl mit der Datensatzspeicherortnummer verglichen wird.
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());
}
Ausgabe:
Location value: 0
Location value: 1
Location value: 2
Location value: 3
GlideRecord – getPlural()
Ruft die Pluralbezeichnung der GlideRecord-Tabelle ab.
Wenn der Tabellenname beispielsweise „Change Request“ lautet, gibt diese Methode „Change Requests“ zurück.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Die Pluralbezeichnung der GlideRecord-Tabelle. |
In diesem Beispiel werden die Rückgabewerte für getLabel() und getPlural() für die Incident-Tabelle überprüft.
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";
Bereichsbezogenes Äquivalent
Um die getPlural() -Methode in einer bereichsbezogenen Anwendung zu verwenden, rufen Sie mit der bereichsbezogenen GlideRecord.getED()- Methode den Deskriptor des Felds ab und verwenden dann die bereichsbezogene GlideElementDescriptor.getPlural()- Methode.
GlideRecord – getRecordClassName()
Ruft den Klassennamen (Tabellennamen) für den aktuellen Datensatz ab.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Klassen- oder Tabellenname |
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;
}
Bereichsbezogenes Äquivalent
Um die getRecordClassName()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: getRecordClassName().
GlideRecord – getRelatedLists()
Ruft eine Liste von Namen und Anzeigewerten von zugehörigen Listen ab, die dem aktuellen GlideRecord zugeordnet sind.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| HashMap | Hash-Zuordnung mit Namen und Anzeigewerten zugehöriger Listen. |
In diesem Beispiel wird gezeigt, wie Sie die Liste der Namen und Anzeigewerte von zugehörigen Listen abrufen, die dem aktuellen GlideRecord zugeordnet sind, sie in einem Array speichern und dann ihre Werte drucken.
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()
Ruft eine Liste mit Namen und Anzeigewerten von Tabellen ab, auf die der aktuelle Datensatz verweist.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| HashMap | Hashmap mit Namen und Anzeigewerten von zugehörigen Tabellen. |
Dieses Beispiel zeigt, wie Sie die Liste der Namen und Anzeigewerte von Tabellen im Zusammenhang mit dem aktuellen GlideRecord abrufen, sie in einem Array speichern und dann ihre Werte ausgeben.
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()
Ruft die Anzahl der Zeilen (Datensätze) im aktuellen GlideRecord-Objekt ab.
- Die Anzahl der Datensätze in GlideRecord oder GlideAggregate wird abgerufen
- Die APIs „GlideRecord getRowCount()“ und „GlideAggregate getAggregate()“ bieten ähnliche Informationen. Verwenden Sie die folgenden Kriterien, um zu bestimmen, welche Option für Sie am besten geeignet ist.
- Die getRowCount()-Methode von GlideRecord gibt an, wie viele Datensätze von einer Abfrage zurückgegeben wurden, zusammen mit den Datensätzen selbst. Wenn Sie die Anzahl der Datensätze im Ergebnissatz vor oder nach dem Iterieren über den Satz benötigen, um Aktionen für die Datensätze auszuführen, verwenden Sie diese Methode.
- Die getAggregate()-Methode von GlideAggregate ruft nur die Anzahl der Datensätze ab, die der Abfrage entsprechen, nicht jedoch die tatsächlichen Datensätze. Die Zusammenfassung muss für das GlideAggregate- Objekt festgelegt werden, bevor die Abfrage ausgegeben wird.
sys_id IN mit mehr als 100 sys_id-Werten verwenden, z. B. grIncident.addQuery('sys_id', 'IN', listOf200SysIds), müssen Sie entweder: - Rufen Sie die disableSysIdInOptimization() -Methode für GlideRecord auf.
- Oder passen Sie die Systemeigenschaft glide.db.first_pass_sys_id_list_size.max auf einen Wert an, der höher ist als die Anzahl der sys_ids in der Liste.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Nummer | Anzahl der Zeilen im aktuellen GlideRecord. |
Das folgende Beispiel zeigt, wie die Anzahl der Incidents aus der Incident-Tabelle [Incident] abgerufen wird.
var numberOfIncidents = new GlideRecord('incident');
numberOfIncidents.query();
gs.info("Records in incident table: " + numberOfIncidents.getRowCount());
Ausgabe:
Records in incident table: 6920
Das folgende Codebeispiel zeigt, wie Sie mit der Methode disableSysIdInOptimiation() die sys_id-Grenzwertoptimierung deaktivieren, wenn Sie eine sys_id-Liste für Incidents mit 200 Einträgen übergeben.
var listOf200SysIds = [ ... ]; // 200 comma separated sys_ids
var grIncident = new GlideRecord('incident');
grIncident.addQuery('sys_id', 'IN', listOf200SysIds);
grIncident.disableSysIdInOptimization(); // Rowcount could be incorrect without this method call
grIncident.query();
if (grIncident.next())
gs.info("Rowcount: " + grIncident.getRowCount());
Ausgabe:
Rowcount: 200
Bereichsbezogenes Äquivalent
Um die getRowCount()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: getRowCount().
GlideRecord – getRowNumber()
Ruft die von saveLocation() oder setLocation()festgelegte Zeilennummer ab.
Um die aktuelle Zeilennummer abzurufen, verwenden Sie getLocation().
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Nummer | Gespeicherte Zeilennummer. |
In diesem Beispiel wird gezeigt, wie Sie eine Zeilenposition in der Benutzertabelle speichern und dann diese Zeilennummer abrufen.
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);
Ausgabe:
Saved row: 5
GlideRecord – getTableName()
Ruft den Tabellennamen ab, der diesem GlideRecord zugeordnet ist.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Tabellenname |
In diesem Beispiel wird gezeigt, wie der aktuelle Tabellenname in das Systemprotokoll geschrieben wird.
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);
}
}
Bereichsbezogenes Äquivalent
Um die getTableName()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: getTableName().
GlideRecord – getUniqueValue()
Ruft den Primärschlüssel des Datensatzes ab, der normalerweise die sys_id ist, sofern nicht anders angegeben.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Eindeutiger Primärschlüssel als Zeichenfolge oder NULL, wenn der Schlüssel NULL ist. |
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)
Ruft den Zeichenfolgenwert eines angegebenen Felds oder den Zeichenfolgenwert eines Attributs in einem dynamischen Attributspeicher ab.
Weitere Informationen zu dynamischen Attributen finden Sie unter Dynamic Schema.
| Name | Typ | Beschreibung |
|---|---|---|
| fieldName | Zeichenfolge | Der Name des Felds, dessen Wert Sie abrufen möchten, oder der Pfad zu einem Attribut in einem dynamischen Attributspeicher, das Sie abrufen möchten. Format des dynamischen Pfads: dyn_att_field->group_name->attribute_name
|
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Wert des angegebenen Elements. Gibt null zurück, wenn das Feld leer ist oder nicht vorhanden ist. Hinweis: Boolesche Werte werden als Zeichenfolgenwerte vom Typ „0“ und „1“ anstelle von „falsch“ und „wahr“ zurückgegeben. |
In diesem Beispiel wird die getValue()- Methode verwendet, um Feldwerte in zwei zu vergleichenden GlideRecords abzurufen.
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'));
}
In diesem Beispiel wird gezeigt, wie der Wert eines dynamischen Attributs abgerufen wird.
// Update the value of the attribute 'attribute_store->car->color' to 'Red' on incident `INC0009009`
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store->car->color', 'Red');
gr1.update();
// Then retrieve the value of the attribute on the same record
var gr2 = new GlideRecord('incident');
gr2.get('number', 'INC0009009');
gs.info(gr2.getValue('attribute_store->car->color'));
Ausgabe:
*** Script: Red
Bereichsbezogenes Äquivalent
Um die getValue()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: getValue().
GlideRecord – hasAttachments()
Bestimmt, ob der aktuelle GlideRecord Anhänge enthält.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | „True“, wenn der aktuelle Datensatz Anhänge enthält, andernfalls „false“. |
In diesem Beispiel wird nach Anhängen gesucht und ein Link erstellt, falls vorhanden.
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()
Bestimmt, ob weitere Datensätze im GlideRecord vorhanden sind.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | Wahr, wenn der Abfragesatz weitere Datensätze enthält, andernfalls falsch. |
In diesem Beispiel wird gezeigt, wie verschiedene Funktionen aufgerufen werden, je nachdem, ob im aktuellen GlideRecord zusätzliche Datensätze vorhanden sind.
if (now_GR.hasNext()) {
dothis(); // found it, do it
} else {
dothat(); // didn't find it
};
Bereichsbezogenes Äquivalent
Um die hasNext()-Methode in einer bereichsbezogenen Anwendung zu verwende, verwenden Sie die entsprechende bereichsbezogene Methode: hasNext().
GlideRecord – initialize()
Erstellt einen leeren Datensatz im aktuellen GlideRecord, der zum Ausfüllen vor einer Einfügung geeignet ist.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
In diesem Beispiel wird ein neuer Datensatz in der Tabelle to_do initialisiert, erstellt und anschließend in die Tabelle eingefügt.
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();
Bereichsbezogenes Äquivalent
Um die initialize() -Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: initialize().
GlideRecord – insert()
Fügt einen neuen Datensatz mit den Feldwerten ein, die für den aktuellen Datensatz festgelegt wurden.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Die sys_id des eingefügten Datensatzes oder null, wenn der Datensatz nicht eingefügt wird. |
In diesem Beispiel wird ein neuer Datensatz in der Tabelle „to_do“ erstellt, Werte für einige Datensatzfelder festgelegt und der Datensatz dann in die Tabelle eingefügt.
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();
Bereichsbezogenes Äquivalent
Um die insert()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: insert().
GlideRecord – insertWithReferences()
Fügt einen neuen Datensatz ein und fügt auch alle zugehörigen Datensätze mit den angegebenen Informationen ein oder aktualisiert sie.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | sys_id des eingefügten Datensatzes oder null, wenn der Datensatz nicht eingefügt wurde. |
Wenn kein Referenzwert angegeben ist (wie unten), wird ein neuer Anwenderdatensatz mit „first_name“ und „last_name“ erstellt, und der Wert von „caller_id“ wird auf diesen neu erstellten sys_user-Datensatz festgelegt. Das Ergebnis ist ein neuer sys_user-Datensatz mit „first_name“ und „last_name“ sowie ein neuer Incident-Datensatz mit „short_description“ und „caller_id“.
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();
Wenn ein Wert für „caller_id“ angegeben ist, wird dieser Wert mit „first_name“ und „last_name“ aktualisiert. Das Ergebnis ist ein neu erstellter Incident Record mit Werten für short_description und 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)
Überprüft eine Tabelle auf den Typ/die Klasse der Tabelle.
| Name | Typ | Beschreibung |
|---|---|---|
| className | Zeichenfolge | Name eines Datensatztyps oder einer Datensatzklasse. |
| Typ | Beschreibung |
|---|---|
| Boolean | „True“, wenn Tabelle eine Instanz der angegebenen Klasse ist. |
In diesem Beispiel wird überprüft, ob die übergebene Gruppe/der übergebene Anwender den Tabellen-/Klassentyp „sys_user“ aufweist.
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()
Bestimmt, ob der aktuelle Datensatz in die Datenbank eingefügt wurde.
Diese Methode gibt nur dann „true“ zurück, wenn die newRecord()-Methode aufgerufen wurde. Diese Methode ist nützlich für die geskriptete ACL und in den Bedingungen für UI Actions, sollte jedoch nicht in Hintergrundskripts verwendet werden.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob der aktuelle Datensatz neu ist (noch nicht in die Datenbank eingefügt) Mögliche Werte:
|
In diesem Beispiel wird überprüft, ob der neue Datensatz in die Tabelle „sys_user“ eingefügt wurde.
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()
Bestimmt, ob die aktuelle GlideRecord-Tabelle vorhanden ist.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | „wahr“, wenn die Tabelle vorhanden (gültig) ist, andernfalls „falsch“. |
In diesem Beispiel wird überprüft, ob die Incident-Tabelle vorhanden ist.
var testTable = new GlideRecord('incident');
gs.print(testTable.isValid());
Bereichsbezogenes Äquivalent
Um die isValid()-Methode in einer Bereichsanwendung zu verwenden, verwenden Sie die entsprechende Bereichsmethode: isValid().
GlideRecord – isValidField(String columnName)
Bestimmt, ob das angegebene Feld in der aktuellen GlideRecord-Tabelle definiert ist.
| Name | Typ | Beschreibung |
|---|---|---|
| columnName | Zeichenfolge | Name einer zu überprüfenden Spalte. |
| Typ | Beschreibung |
|---|---|
| Boolean | Wahr, wenn das Feld in der Tabelle definiert ist, andernfalls falsch. |
In diesem Beispiel wird überprüft, ob das Feld „sys_class_name“ in der Tabelle „cmds_software_instance“ vorhanden ist.
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++;
}
}
}
Bereichsbezogenes Äquivalent
Um die isValidField()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: isValidField().
GlideRecord – isValidRecord()
Bestimmt, ob der aktuelle Datensatz gültig ist.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob der aktuelle Datensatz gültig ist. Gültige Werte:
|
In diesem Beispiel wird überprüft, ob der Datensatzbezeichner, der mit der sys_id übergeben wird, ein gültiger Datensatz in der Ideentabelle ist.
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();
}
}
Bereichsbezogenes Äquivalent
Um die isValidRecord()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: isValidRecord().
GlideRecord – newRecord()
Erstellt einen GlideRecord, legt die Standardwerte für die Felder fest und weist dem Datensatz eine eindeutige ID zu.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
In diesem Beispiel wird überprüft, ob der neue Datensatz in die Tabelle „sys_user“ eingefügt wurde.
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());
Bereichsbezogenes Äquivalent
Um die newRecord()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: newRecord().
GlideRecord – next()
Geht zum nächsten Datensatz im GlideRecord.
Verwenden Sie diese Methode, um die Datensätze zu durchlaufen, die von einer GlideRecord-Abfrage zurückgegeben werden.
if(myObj.next())-Konstrukt verarbeitet nur den ersten zurückgegebenen Datensatz.| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob in GlideRecord ein „nächster“ Datensatz vorhanden ist Gültige Werte:
|
In diesem Beispiel wird gezeigt, wie die Incident-Tabelle mit der Methode „next()“ durchlaufen wird.
var rec = new GlideRecord('incident');
rec.query();
while (rec.next()) {
gs.print(rec.number + ' exists');
}
Bereichsbezogenes Äquivalent
Um die next()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: next().
GlideRecord – _next()
Geht zum nächsten Datensatz im GlideRecord. Bietet die gleiche Funktionalität wie next(), für Fälle, in denen der GlideRecord die Spalte „next“ aufweist.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | „True“, wenn der Abfragesatz mehr Datensätze enthält. |
var rec = new GlideRecord('sys_template');
rec.query();
while (rec._next()) {
gs.print(rec.number + ' exists');
}
Bereichsbezogenes Äquivalent
Um die _next()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: _next().
GlideRecord – operation()
Bestimmt, ob es sich um einen Vorgang zum Einfügen, Aktualisieren oder Löschen handelt.
Wenn Sie den Vorgang kennen, können Sie mit current.operation() eine generische Geschäftsregel erstellen, die jeden Vorgang eindeutig behandelt.
Informationen zur Verwendung der globalen Variablen currentfinden Sie unter Globale Variablen in Geschäftsregeln.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Aktueller Vorgang. Mögliche Werte:
|
Das folgende Beispiel zeigt, wie diese Methode in einer Geschäftsregel verwendet wird. Die Methode „operation()“ erkennt, welcher Vorgang ein Ereignis ausgelöst hat, und führt je nach Aktualisierungs- und Einfügevorgang eine andere Aktion aus.
if(current.operation() == "update") {
current.updates ++; }
if(current.operation() == "insert") {
current.updates = 0; }
In diesem Beispiel wird gezeigt, wie die Operation()- Methode verwendet wird, um den Vorgangswert an die startFlow()- Methode zu übergeben.
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);
}
}
Bereichsbezogenes Äquivalent
Um die operation()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: operation().
GlideRecord – orderBy(String fieldName)
Gibt einen Feldnamen oder den Pfad zu einem Attribut in einem dynamischen Attributspeicher an, der zum Sortieren des Abfragesatzes verwendet wird. Um nach mehreren Feldern zu sortieren, rufen Sie diese Methode mehrmals mit unterschiedlichen Feldwerten auf.
| Name | Typ | Beschreibung |
|---|---|---|
| fieldName | Zeichenfolge | Tabellenfeldname oder Pfad zu einem Attribut in einem dynamischen Attributspeicher, in dem der Abfragesatz bestellt werden soll. Format des dynamischen Pfads: dyn_att_field->group_name->attribute_name
Weitere Informationen zu dynamischen Attributen finden Sie unter Dynamic Schema. |
| Typ | Beschreibung |
|---|---|
| void |
In diesem Beispiel wird gezeigt, wie Sie den Abfragesatz nach „Reihenfolge“ und dann nach „Nummer“ sortieren.
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');
}
In diesem Beispiel wird gezeigt, wie der Abfragesatz nach einem Attribut in einem dynamischen Attributspeicher sortiert wird.
var gr_Inc = new GlideRecord('incident');
gr_Inc.orderBy('attribute_store->caller_id->first_name');
gr_Inc.query();
while(gr_Inc.next()) {
gs.info("first_name: " + gr_Inc.getValue('attribute_store->caller_id->first_name'));
}
*** Script: first_name: Alejandro
*** Script: first_name: Bertie
*** Script: first_name: Beth
*** Script: first_name: Bow
*** Script: first_name: Bud
*** Script: first_name: Carol
*** Script: first_name: Charlie
*** Script: first_name: Christen
*** Script: first_name: DavidBereichsbezogenes Äquivalent
Um die orderBy()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: orderBy().
GlideRecord - orderByDesc(String fieldName)
Gibt das Feld oder ein Attribut in einem dynamischen Attributspeicher an, das zum Sortieren des Abfragesatzes in absteigender Reihenfolge verwendet werden soll.
| Name | Typ | Beschreibung |
|---|---|---|
| fieldName | Zeichenfolge | Tabellenfeldname oder Pfad zu einem Attribut in einem dynamischen Attributspeicher, für das der Abfragesatz in absteigender Reihenfolge sortiert werden soll. Format des dynamischen Pfads: dyn_att_field->group_name->attribute_name
Weitere Informationen zu dynamischen Attributen finden Sie unter Dynamic Schema. |
| Typ | Beschreibung |
|---|---|
| void |
In diesem Beispiel wird gezeigt, wie Sie den Abfragesatz in aufsteigender oder absteigender Reihenfolge sortieren.
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;
}
In diesem Beispiel wird gezeigt, wie der Abfragesatz nach einem Attribut in einem dynamischen Attributspeicher sortiert wird.
var gr_Inc = new GlideRecord('incident');
gr_Inc.orderByDesc('attribute_store->caller_id->first_name');
gr_Inc.query();
while(gr_Inc.next()) {
gs.info("first_name: " + gr_Inc.getValue('attribute_store->caller_id->first_name'));
}
*** Script: first_name: David
*** Script: first_name: Christen
*** Script: first_name: Charlie
*** Script: first_name: Carol
*** Script: first_name: Bud
*** Script: first_name: Bow
*** Script: first_name: Beth
*** Script: first_name: Bertie
*** Script: first_name: AlejandroBereichsbezogenes Äquivalent
Um die orderByDesc()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: orderByDesc().
GlideRecord – Abfrage (Zeichenfolgenfeld, Zeichenfolgenwert)
Führt eine Abfrage der Tabelle basierend auf den in den Abfragemethoden angegebenen Filtern aus, z. B. addQuery() und addEncodedQuery().
Diese Methode fragt die GlideRecord-Tabelle sowie etwaige Verweise auf die Tabelle ab. Weitere Informationen finden Sie unter Tabellen in Skript abfragen.
Weitere Informationen zum Erstellen und Ausführen von Abfragen finden Sie im GlideRecord -Artikel.
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Zeichenfolge | Optional: Außerdem muss ein Wertparameter angegeben werden. Name des Felds, in dem nach dem im Wertparameter angegebenen Wert gesucht werden soll. Hinweis:
Diese Methode wird normalerweise ohne Argumente ausgeführt. Sie können jedoch ein Name-Wert-Paar angeben, um Datensätze mit den angegebenen Werten zu filtern. Wenn die Parameter angegeben sind, wird der Abfrage die Bedingung „name=value“ hinzugefügt. |
| Wert | Zeichenfolge | Optional: Außerdem muss ein Feldparameter angegeben werden. Wert, nach dem im angegebenen Feldparameter gesucht werden soll. |
| Typ | Beschreibung |
|---|---|
| void |
Das folgende Beispiel zeigt, wie das Systemwörterbuch [sys_dictionary] nach Tabellen mit einem Abfragefeld durchsucht wird.
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]);
};
Ausgabe:
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
Bereichsbezogenes Äquivalent
Um die query()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: query().
GlideRecord – _query(Zeichenfolgenfeld, Zeichenfolgenwert)
Führt eine Abfrage der Tabelle basierend auf den in den Abfragemethoden angegebenen Filtern aus, z. B. addQuery() und addEncodedQuery(). Diese Methode sollte für Tabellen verwendet werden, in denen eine Spalte mit dem Namen „query“ vorhanden ist, die beim Ausführen der Abfragemethode () zu Fehlern führen kann.
Diese Methode fragt die GlideRecord-Tabelle sowie etwaige Verweise auf die Tabelle ab. Weitere Informationen finden Sie unter Tabellen in Skript abfragen.
Weitere Informationen zum Erstellen und Ausführen von Abfragen finden Sie im GlideRecord -Artikel.
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Zeichenfolge | Optional: Außerdem muss ein Wertparameter angegeben werden. Name des Felds, in dem nach dem im Wertparameter angegebenen Wert gesucht werden soll. Hinweis:
Diese Methode wird normalerweise ohne Argumente ausgeführt. Sie können jedoch ein Name-Wert-Paar angeben, um Datensätze mit den angegebenen Werten zu filtern. Wenn die Parameter angegeben sind, wird der Abfrage die Bedingung „name=value“ hinzugefügt. |
| Wert | Zeichenfolge | Optional: Außerdem muss ein Feldparameter angegeben werden. Wert, nach dem im angegebenen Feldparameter gesucht werden soll. |
| Typ | Beschreibung |
|---|---|
| void |
Das folgende Beispiel zeigt, wie die Tabelle „Wissensfeedback“ [kb_feedback] abgefragt und KB-Artikel mit Kommentaren aufgelistet werden, die Excel enthalten.
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'));
}
Ausgabe:
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?
Bereichsbezogenes Äquivalent
Um die _query()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: _query().
GlideRecord – queryNoDomain (Zeichenfolgenfeld, Zeichenfolgenwert)
Wird in domänengetrennten Instanzen verwendet. Ähnlich wie bei query() wird die Abfrage anhand der Tabelle basierend auf den durch addQuery() und addEncodedQuery() angegebenen Filtern ausgeführt, Domänen werden jedoch ignoriert.
Diese Methode fragt die GlideRecord-Tabelle sowie etwaige Verweise auf die Tabelle ab. Weitere Informationen finden Sie unter Tabellen in Skript abfragen.
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Zeichenfolge | Optional: Außerdem muss ein Wertparameter angegeben werden. Name des Felds, in dem nach dem im Wertparameter angegebenen Wert gesucht werden soll. Hinweis:
Diese Methode wird normalerweise ohne Argumente ausgeführt. Sie können jedoch ein Name-Wert-Paar angeben, um Datensätze mit den angegebenen Werten zu filtern. Wenn die Parameter angegeben sind, wird der Abfrage die Bedingung „name=value“ hinzugefügt. |
| Wert | Zeichenfolge | Optional: Außerdem muss ein Feldparameter angegeben werden. Wert, nach dem im angegebenen Feldparameter gesucht werden soll. |
| Typ | Beschreibung |
|---|---|
| void |
In diesem Beispiel wird gezeigt, wie die Incident-Tabelle für alle Domänen abgefragt wird.
var rec = new GlideRecord('incident');
rec.queryNoDomain();
while (rec.next()) {
gs.print(rec.number + ' exists');
}
GlideRecord – restoreLocation()
Legt den aktuellen Datensatz als den Datensatz fest, der mit savelocation() gespeichert wurde. Wenn saveLocation() nicht aufgerufen wurde, wird der aktuelle Datensatz auf den ersten Datensatz von GlideRecord festgelegt.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
Dieses Beispiel zeigt, wie Sie den aktuellen Datensatzspeicherort speichern, zum nächsten Datensatz wechseln und dann zum gespeicherten Speicherort zurückkehren.
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()
Speichert die Nummer der aktuellen Zeile, sodass Sie mit der Methode „restoreLocation()“ zu dieser Position zurückkehren können.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| void |
Dieses Beispiel zeigt, wie Sie den aktuellen Datensatzspeicherort speichern, zum nächsten Datensatz wechseln und dann zum gespeicherten Speicherort zurückkehren.
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(Boolean b)
Legt ein Flag fest, um anzugeben, ob die nächste Datenbankaktion (Einfügen, Aktualisieren, Löschen) abgebrochen werden soll.
Verwenden Sie in einer onBefore- Business-Regel, um zu verhindern, dass die Datenbankaktion ausgeführt wird. Die Business Rule läuft nach dem Aufruf von setAbortAction() weiter. Durch das Aufrufen von setAbortAction() werden die nachfolgenden Business Rules nicht an der Ausführung gehindert. Durch Aufrufen dieser Methode wird nur die Ausführung der Datenbankaktion verhindert.
| Name | Typ | Beschreibung |
|---|---|---|
| b | Boolean | „True“, um die nächste Aktion abzubrechen, oder „false“, um die nächste Aktion zuzulassen. |
| Typ | Beschreibung |
|---|---|
| void |
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);
}
}
Bereichsbezogenes Äquivalent
Um die setAbortAction()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: setAbortAction().
GlideRecord – setDisplayValue(String name, Object value)
Legt ein angegebenes Feld oder ein Attribut in einem dynamischen Attributspeicher auf einen angegebenen Anzeigewert fest.
Für ein Referenzfeld ist dies der Anzeigewert für die Tabelle. Für ein Datum/eine Uhrzeit ist dies die Uhrzeit in der aktuellen Zeitzone des Anrufers.
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Zeichenfolge | Name des Felds, dessen Wert festgelegt werden soll, oder Pfad zu einem Attribut in einem dynamischen Attributspeicher. Format des dynamischen Pfads: dyn_att_field->group_name->attribute_name
|
| Wert | Objekt | Wert, der im angegebenen Attribut festgelegt werden soll. Hinweis: Für dynamische Attribute werden nur die folgenden Datentypen unterstützt:
|
| Typ | Beschreibung |
|---|---|
| void |
Das folgende Codebeispiel zeigt, wie Sie einen Anzeigewert in einem Datensatz festlegen und dann den Datensatz aktualisieren.
var now_GR = new GlideRecord('incident');
now_GR.get('46f09e75a9fe198100f4ffd8d366d17b');
now_GR.setDisplayValue('opened_at','2011-02-13 4:30:00');
now_GR.update();
Das folgende Codebeispiel zeigt, wie ein Anzeigewert in einem dynamischen Attributspeicher festgelegt wird.
var gr_AppTab = new GlideRecord('application_table');
gr_AppTab.setValue('dyn_att_field->group->attr', 42);
gr_AppTab.setDisplayValue('dyn_att_field->group->attr2, true);
gr_AppTab.update();
gs.info('Attr value: ' +
gr_AppTab.getDisplayValue('dyn_att_field->group->attr);
gs.info('Attr2 value: ' +
gr_AppTab.getDisplayValue('dyn_att_field->group->attr2);
GlideRecord – setDynamicAttributeValue(String fullPath, Objektwert)
Legt den Wert des dynamischen Attributs fest, das sich unter einem angegebenen Pfad befindet.
| Name | Typ | Beschreibung |
|---|---|---|
| fullPath | Zeichenfolge | Pfad zum Suchen des gewünschten dynamischen Attributs. Format des dynamischen Pfads: dyn_att_field->group_name->attribute_name
|
| Wert | Objekt | Wert, auf den das angegebene dynamische Attribut festgelegt werden soll. Der übergebene Wert muss einen der folgenden Datentypen aufweisen:
|
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob das dynamische Attribut erfolgreich aktualisiert wurde. Mögliche Werte:
|
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
var gr_Inc = new GlideRecord('incident');
gr_Inc.setValue('inc_dynamic_groups', '78db044fc4b44210f8770961513dd7fe'); //Sysid of cars dimensions group
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->color","black");
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->make","Honda");
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->model","CRV");
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->luxury",false);
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->cost",20000);
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->avg_mpg",28.4);
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->date_purchased", new GlideDateTime());
gr_Inc.setValue("inc_dynamic_schema->cars->total_miles", 10000.12345);
gr_Inc.insert();
GlideRecord – setDynamicAttributeValue(String dynamicAttributeField, Zeichenfolge groupAttrPath, Objektwert)
Legt den Wert des dynamischen Attributs fest, das sich in einem angegebenen Feld des aktuellen GlideRecord und einem angegebenen Attributpfad befindet.
| Name | Typ | Beschreibung |
|---|---|---|
| dynamischesAttributFeld | Zeichenfolge | Name des Felds in der Tabelle, das das dynamische Attribut enthält. |
| attributePath | Zeichenfolge | Attributpfad zum Suchen des zugeordneten dynamischen Schemaattributs. Format: "group_name->attr_name"
Beispiel: |
| Wert | Objekt | Wert, auf den das angegebene dynamische Attribut festgelegt werden soll. Der übergebene Wert muss einen der folgenden Datentypen aufweisen:
|
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob das dynamische Attribut erfolgreich aktualisiert wurde. Mögliche Werte:
|
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store', 'car->time_of_purchase', '2020-05-13 13:52:44');
gr1.update();
// Then retrieve the value of the attribute on the same record
var gr2 = new GlideRecord('incident');
gr2.get('number', 'INC0009009');
gs.info("Time of Purchase Value (UTC): " + gr2.getDynamicAttributeValue('attribute_store', 'car->time_of_purchase'));
gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store', 'car->time_of_purchase'));
Ausgabe:
*** Script: Time of Purchase Value (UTC): 2020-05-13 13:52:44
*** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44
GlideRecord - setDynamicAttributeDisplayValue(String fullPath, Object value)
Legt den Anzeigewert des dynamischen Attributs fest, das sich unter einem angegebenen Pfad befindet.
| Name | Typ | Beschreibung |
|---|---|---|
| fullPath | Zeichenfolge | Pfad zum Suchen des dynamischen Attributs, dessen Anzeigewert Sie aktualisieren möchten. Format des dynamischen Pfads: dyn_att_field->group_name->attribute_name
|
| Wert | Objekt | Anzeigewert, auf den das angegebene dynamische Attribut festgelegt werden soll. Der übergebene Wert muss einen der folgenden Datentypen aufweisen:
|
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob der Anzeigewert des dynamischen Attributs erfolgreich aktualisiert wurde. Mögliche Werte:
|
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
var grProdTab = new GlideRecord('products_table');
grProdTab.query();
grProdTab.next();
var val = grProdTab.setDynamicAttributeDisplayValue('product_details->cars->date_purchased', '2023-03-31 08:54:26');
GlideRecord - setDynamicAttributeDisplayValue(String dynamicAttributeField, Zeichenfolge groupAttrPath, Objektwert)
Legt den Anzeigewert des dynamischen Attributs fest, das sich in einem angegebenen Feld des aktuellen GlideRecord und einem angegebenen Attributpfad befindet.
| Name | Typ | Beschreibung |
|---|---|---|
| dynamischesAttributFeld | Zeichenfolge | Name des Felds in der Tabelle, das das dynamische Attribut enthält. |
| groupAttrPath | Zeichenfolge | Attributpfad zum Suchen des zugeordneten dynamischen Schemaattributs. Format: "group_name->attr_name"
Beispiel: |
| Wert | Objekt | Anzeigewert, auf den das angegebene dynamische Attribut festgelegt werden soll. Der übergebene Wert muss einen der folgenden Datentypen aufweisen:
|
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob der Anzeigewert des dynamischen Attributs erfolgreich aktualisiert wurde. Mögliche Werte:
|
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
var grProdTab = new GlideRecord('products_table');
grProdTab.query();
grProdTab.next();
var val = grProdTab.setDynamicAttributeDisplayValue('product_details', 'cars->date_purchased', '2023-03-31 08:54:26');
GlideRecord – setDynamicAttributeValues(String dynamicAttributeField, GlideDynamicAttributeStore-Werte)
Legt einen oder mehrere dynamische Attributwerte mit Werten fest, die im übergebenen GlideDynamicAttributeStore-Objekt angegeben sind.
Diese Methode aktualisiert nur die Attribute und Werte, die als Argumente übergeben wurden. Attribute und Werte im GlideRecord, die nicht angegeben sind, sind von diesem Aufruf nicht betroffen. Ungültige Gruppen, Attribute oder Werte werden ignoriert. Überprüfen Sie die Protokollnachrichten auf Informationen zu möglichen Fehlern.
| Name | Typ | Beschreibung |
|---|---|---|
| dynamischesAttributFeld | Zeichenfolge | Name des Felds in der aktuellen Tabelle, das das dynamische Schemaenthält. |
| Werte | GlideDynamicAttributeStore | GlideDynamicAttributeStore-Objekt, das die zu aktualisierenden dynamischen Attribute enthält. Die im Objekt ausgefüllten Werte müssen die folgenden Datentypen aufweisen:
|
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
var das = new GlideDynamicAttributeStore();
das.setDynamicAttributeValue('group->attribute1', 'Apple');
das.setDynamicAttributeValue('group->attribute2', 1234);
var gr_Inc = new GlideRecord('incident');
gr_Inc.query();
gr_Inc.next();
gr_Inc.setDynamicAttributeValues(das);
GlideRecord – setForceUpdate(Boolean force)
Aktualisiert den Datensatz, auch wenn sich Felder nicht geändert haben.
| Name | Typ | Beschreibung |
|---|---|---|
| force | Boolean | „True“ für Update, auch wenn sich Felder nicht geändert haben, andernfalls „false“. |
| Typ | Beschreibung |
|---|---|
| void |
In diesem Beispiel wird gezeigt, wie Sie die Aktualisierung eines Datensatzes in der Tabelle itfm_cost_model auch ohne Änderungen erzwingen.
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(Number limit)
Legt die maximale Anzahl von Datensätzen fest, die im GlideRecord von einer Abfrage zurückgegeben werden sollen.
| Name | Typ | Beschreibung |
|---|---|---|
| limit | Zahl | Grenzwert für Datensätze, abgerufen werden sollen. |
| Typ | Beschreibung |
|---|---|
| void |
In diesem Beispiel wird die Anzahl der in der Abfrage zurückgegebenen Datensätze auf maximal zehn festgelegt.
var now_GR = new GlideRecord('incident');
now_GR.orderByDesc('sys_created_on');
now_GR.setLimit(10);
now_GR.query();
Bereichsbezogenes Äquivalent
Um die setLimit()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: setLimit().
GlideRecord – setLocation(Number rowNumber)
Legt die aktuelle Zeilenposition auf den angegebenen Wert fest.
| Name | Typ | Beschreibung |
|---|---|---|
| rowNumber | Nummer | Zeilennummer, die als aktuelle Zeile festgelegt werden soll. |
| Typ | Beschreibung |
|---|---|
| void |
In diesem Beispiel wird gezeigt, wie die Datensatzposition in der Incident-Tabelle festgelegt wird
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()
Generiert eine neue GUID und legt sie als eindeutige ID (sys_id) für den aktuellen Datensatz fest.
Diese Funktion gilt nur für neue Datensätze. Sie können die GUID für einen vorhandenen Datensatz nicht ändern.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Sys_id des aktuellen Datensatzes. |
In diesem Beispiel wird ein neuer Aufgabendatensatz erstellt, und die ID wird in der Tabelle task_rel_task gespeichert.
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 (String guid)
Generiert eine neue GUID und legt sie als eindeutige ID für den aktuellen Datensatz fest, wenn ein neuer Datensatz eingefügt wird.
| Name | Typ | Beschreibung |
|---|---|---|
| guid | Zeichenfolge | Wert für die neue GUID. |
| Typ | Beschreibung |
|---|---|
| void |
In diesem Beispiel wird eine neue GUID generiert und als eindeutige ID für den neu erstellten Datensatz cmdb_software_instance festgelegt.
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++;
}
}
Bereichsbezogenes Äquivalent
Um die setNewGuidValue()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: setNewGuidValue().
GlideRecord – setQueryReferences(Boolean queryReferences)
Aktiviert oder deaktiviert die Verwendung des Anzeigenamens des Referenzfelds, wenn ein Referenzfeld abgefragt wird.
| Name | Typ | Beschreibung |
|---|---|---|
| queryReferences | Boolean | Kennzeichnung, die angibt, wann Daten generiert werden sollen. Gültige Werte:
|
| Typ | Beschreibung |
|---|---|
| void |
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(Boolean e)
Deaktiviert oder aktiviert die Ausführung von Engines (Genehmigungsregeln/Zuweisungsregeln).
| Name | Typ | Beschreibung |
|---|---|---|
| e | Boolean | Kennzeichnung, die angibt, ob die Ausführung von Engines aktiviert oder deaktiviert werden soll. Gültige Werte:
|
| Typ | Beschreibung |
|---|---|
| void |
In diesem Beispiel wird gezeigt, wie Engines und Geschäftsregeln vor dem Ausführen einer Abfrage deaktiviert werden.
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(String name, Object value)
Legt das angegebene Feld oder ein Attribut in einem dynamischen Attributspeicher auf einen angegebenen Wert fest.
Normalerweise führt ein Skript eine direkte Zuweisung durch, z. B. now_GR.category = value. Wenn jedoch in einem Skript der Elementname eine Variable ist, können Sie now_GR.setValue(elementName, value)verwenden. Stellen Sie beim Festlegen eines Werts sicher, dass der Datentyp des Felds mit dem Datentyp des eingegebenen Werts übereinstimmt.
- Nicht für Authentifizierung mit Passwort2-Feldern
- Die Methode „setValue()“ übergibt password2-Daten als Klartext, was zu einem Fehler führt, weil verschlüsselte Daten erwartet werden. Darüber hinaus werden durch die Verwendung der Methode „setValue()“ für password2-Felder Daten verfügbar gemacht, die verschlüsselt werden sollten.
Verwenden Sie für die password2-Authentifizierung stattdessen die Methode setDisplayValue().
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Zeichenfolge | Name des Felds, dessen Wert festgelegt werden soll, oder Pfad zu einem Attribut in einem dynamischen Attributspeicher. Format des dynamischen Pfads: dyn_att_field->group_name->attribute_name
Weitere Informationen zu dynamischen Attributen finden Sie unter Dynamic Schema. |
| Wert | Objekt | Wert, der im angegebenen Feld festgelegt werden soll. Hinweis: Für ein dynamisches Attribut werden nur die folgenden Datentypen unterstützt:
|
| Typ | Beschreibung |
|---|---|
| Keine |
In diesem Beispiel wird gezeigt, wie der Wert des Felds „Status“ in der Tabelle „planned_task“ festgelegt wird.
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);
}
In diesem Beispiel wird gezeigt, wie der Wert eines dynamischen Attributs festgelegt wird.
var gr_Inc = new GlideRecord('incident');
gr_Inc.setValue('inc_dynamic_groups', '78db044fc4b44210f8770961513dd7fe'); //Sysid of cars dimensions group
gr_Inc.setValue("inc_dynamic_schema->cars->color", "black");
gr_Inc.setValue("inc_dynamic_schema->cars->make", "Honda");
gr_Inc.setValue("inc_dynamic_schema->cars->model", "CRV");
gr_Inc.setValue("inc_dynamic_schema->cars->luxury", false);
gr_Inc.setValue("inc_dynamic_schema->cars->cost", 25000);
gr_Inc.setValue("inc_dynamic_schema->cars->avg_mpg", 28.4);
gr_Inc.setValue("inc_dynamic_schema->cars->date_purchased", new GlideDateTime());
gr_Inc.setValue("inc_dynamic_schema->cars->total_miles", 10000.12345);
gr_Inc.insert();
Bereichsbezogenes Äquivalent
Um die setValue()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: setValue().
GlideRecord – setWorkflow(Boolean e)
Aktiviert oder deaktiviert die Ausführung von Business Rules, die normalerweise durch nachfolgende Aktionen ausgelöst werden. Wenn der Parameter e auf „falsch“ festgelegt ist, wird eine Einfügung/Aktualisierung nicht geprüft. Die Prüfung erfolgt nur, wenn der Parameter für einen GlideRecord-Vorgang auf „true“ festgelegt ist.
| Name | Typ | Beschreibung |
|---|---|---|
| e | Boolean | Kennzeichnung, die angibt, ob die Ausführung von Business-Regeln aktiviert oder deaktiviert werden soll. Gültige Werte:
|
| Typ | Beschreibung |
|---|---|
| void |
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');
}
}
}
}
Bereichsbezogenes Äquivalent
Um die setWorkflow()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: setWorkflow().
GlideRecord – update(Object reason)
Aktualisiert den GlideRecord mit allen vorgenommenen Änderungen. Wenn der Datensatz nicht vorhanden ist, wird er eingefügt.
| Name | Typ | Beschreibung |
|---|---|---|
| reason | Objekt | Optional. Grund für das Update. Der Grund wird im Audit-Datensatz angezeigt. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Die sys_id des neuen oder aktualisierten Datensatzes. Gibt NULL zurück, wenn das Update fehlschlägt. |
In diesem Beispiel wird ein Datensatz in der Tabelle „task_ci“ aktualisiert.
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();
}
}
Bereichsbezogenes Äquivalent
Um die update()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: update().
GlideRecord – updateMultiple()
Aktualisiert jeden GlideRecord in einer angegebenen Abfrage mit einem angegebenen Satz von Changes.
Informationen zum Hinzufügen von Journaleinträgen finden Sie in der Methode setJournalEntry().
Die Systemeigenschaft glide.db.forced.chunk.threshold legt den Schwellenwert fest, über den das Löschen und Aktualisieren von Blockdatensätzen erzwungen wird. Das Chunking verhindert, dass das Löschen von Primärschlüsseln in großen Tabellen Replikationsprobleme verursacht. Weitere Informationen finden Sie unter Available system properties.
gr_Now.setValue(' <field_name> ', '4')); anstelle von gr_Now= 4 .Diese Methode legt neue Werte fest und löscht vorhandene Werte nicht. Um einen vorhandenen Wert zu löschen, verwenden Sie die Methode setValue(), und setzen Sie das Feld auf null.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Beispiel zeigt, wie Sie den Status aller aktiven Incidents auf 4 – „Warten auf Benutzerinformationen“ aktualisieren.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('active', true);
now_GR.setValue('state', 4);
now_GR.updateMultiple();
Bereichsbezogenes Äquivalent
Um die updateMultiple()-Methode in einer bereichsbezogenen Anwendung zu verwenden, verwenden Sie die entsprechende bereichsbezogene Methode: updateMultiple().
GlideRecord – updateWithReferences(Object reason)
Aktualisiert einen Datensatz und führt auch Einfügungen oder Updates für zugehörige Datensätze mit den bereitgestellten Informationen durch.
| Name | Typ | Beschreibung |
|---|---|---|
| reason | Objekt | Grund für die Aktualisierungen. Der Grund wird im Audit-Datensatz angezeigt. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | sys_id für den Datensatz, der aktualisiert wird. |
Bei der Verarbeitung eines Incidents, bei dem die Anrufer-ID auf den Referenz-sys_user-Datensatz „John Doe“ festgelegt ist, aktualisiert der folgende Code den Anwenderdatensatz von John Doe. Wenn ein Incident verarbeitet wird, für den keine Anrufer-ID angegeben ist, erstellt der folgende Code einen neuen sys_user-Datensatz mit den angegebenen Informationen (first_name, last_name) und legt den Wert der Anrufer-ID auf den neu erstellten sys_user-Datensatz fest.
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();
}