私は1つのレポートを作成しています。報告条件では、私は 'is one of'を使用していて、クライアント呼び出し可能スクリプトを呼び出すことによってsys_id配列を渡しています。javascript:new GetMoreInfoUpdatedChangeTickets()。getSysIds(); sys_idsは「データソース条件:Sys ID in 60a219744fc73200d6940e428110c72b」と表示されます。しかし対応するレコードは表示されません。しかし対応するsys_idレコードが利用可能です。sys_id配列toはレコードを表示していません
答えて
ここに問題があると思います。残念ながら、それはクライアントが呼び出すことができるスクリプトが通常どのように動作するかではありません。スクリプトには、クライアントが呼び出し可能なものであっても、常にサーバー上で実行されます。これらは、クライアント側のスクリプトから非同期のGlideAjax呼び出しを介して呼び出されることを前提としています。
この詳細については、GlideAjaxでthis articleをご覧ください。
しかし、幸いなことに、実際のクエリはクライアントではなくサーバー上で実行されます。したがって、スクリプトにはが含まれています。はおそらく正しい方法ですが、GlideAjaxスクリプトに含めることで、ServiceNowにコンストラクタ(initialize())メソッドをオーバーライドするように指示しているクラスとして残してください。
あなたが返さSYS_IDを取得していると言うので、それは私が説明することは問題ではなく、このソリューションが動作しないことが可能です。しかし、私は他の答えを与えるのに十分な情報がありません。正しい結果を表示していないクエリを実行し、リストの一番上にある最後のクエリのブレッドクラムを右クリックし、[クエリのコピー]をクリックしてにクエリを貼り付けますこのスレッドの返信(特に私のコメントに返信して通知されるので)を見ることができます。
スクリプトのコードにを含めるようにしてください。トラブルシューティングをお手伝いします。
EDIT: 今、あなたはこのコメントへの返信で、あなたのコードを追加したものを、私はいくつかの問題を見ることができます。
あなたの元:
var GetMoreInfoUpdatedChangeTickets = Class.create();
GetMoreInfoUpdatedChangeTickets.prototype = {
initialize: function() {
}, getSysIds: function getMyGroupMembers() {
var ga = new GlideRecord('sysapproval_group');
ga.addQuery('parent.sys_class_name', '=', 'change_request');
ga.query();
gs.log("TotalRecords1 Before:: " + ga.getRowCount());
var sysIdArray = [];
while (ga.next()) {
sysIdArray.push(ga.sys_id);
}
return sysIdArray;
}, type: 'GetMoreInfoUpdatedChangeTickets'
}
ここで私はあなたのコードに加えられた変更のすべてであり、それぞれの説明:
まず、以下のコードで行5には、私は」メンバー関数(別名:メソッド)の宣言方法を変更しました。 getSysIds: function getMyGroupMembers() {}
ここでは、本質的に2つの名前を与え、一度に2つの方法で宣言しました。 通常、関数は次のように宣言されます: function functionName(args) {}
しかし、オブジェクト(またはこの場合、 "new"キーワードを使用して自身のコピーを返すコンストラクタを持つオブジェクトであるClass)の内部では、関数 functionName: function(args) {},
下のコードでわかるように、私はあなたのために調整しました。指定されていない時に「=」が暗示されるよう
次に、ライン以下の8に、私は、あなたのaddQuery()
メソッド呼び出しから冗長「=」演算子を削除しました。これは必須ではありませんが、このようにきれいに見えます。 (それがより理にかなっているように、私も、全体ga
からgrApprovalGroup
にごGlideRecord変数の名前を変更しました。)
私はそれが実行されますかとの整合性を保つために、関数の先頭にsysIdArray
の宣言を移動した(と明確にするために)。これは必須ではありませんが、一般的にお勧めします。
ライン12以下は、元のコードでは、このように見えた: sysIdArray.push(grApprovalGroup.sys_id);
しかし、gr.sys_id
はオブジェクト(タイプ: "GlideElement" - documentation here)であるので、これはそれに参照を推進しているがオブジェクトを配列に追加します。すべての単一の要素が同じオブジェクトを参照であるため、そのオブジェクト(位置gr.sys_id
変化する1つのストリング値プロパティとして、ので、それぞれの文字列値プロパティとアレイのすべての要素を行い詳しいですこれについての情報(私が書いた)that you can find here。 これは良い考えではないと言えば、同じsys_idのリストが何度も繰り返されるでしょう!これを修正するには、以下のコードの12行目のように、私がリンクした記事のように、推奨される "getter"メソッドが推奨されます。
var GetMoreInfoUpdatedChangeTickets = Class.create();
GetMoreInfoUpdatedChangeTickets.prototype = {
initialize: function() {
},
getSysIds: function() {
var sysIdArray = [];
var grApprovalGroup = new GlideRecord('sysapproval_group');
grApprovalGroup.addQuery('parent.sys_class_name', 'change_request');
grApprovalGroup.query();
while (grApprovalGroup.next()) {
sysIdArray.push(grApprovalGroup.getValue('sys_id'));
}
return sysIdArray;
},
type: 'GetMoreInfoUpdatedChangeTickets'
};
最後に、実際にクラスから関数を抽出して名前を変更して、スクリプトのインクルード自体が単なる関数になるようにする必要があります。あなたは、クエリのJavaScriptで「新しい」キーワードを使用することはできませんので
function GetMoreInfoUpdatedChangeTickets() {
var sysIdArray = [];
var grApprovalGroup = new GlideRecord('sysapproval_group');
grApprovalGroup.addQuery('parent.sys_class_name', 'change_request');
grApprovalGroup.query();
while (grApprovalGroup.next()) {
sysIdArray.push(grApprovalGroup.getValue('sys_id'));
}
return sysIdArray;
}
は、それは(クラスなし)このように、それを定義する必要がありますし、我々は我々ができることをやった後、「クライアントを再有効化以前に有効にした「呼び出し可能」オプションを使用します。
あなたはそれをやった後は、次のURLに移動し、アクションでクエリスクリプトを見ることができるはずです:私のコードは以下のように似ている、あなたの提案を実装した後
- 1. sys_id配列は、レポートのレコードを表示しないものです
- 2. h:dataTableはレコードを表示しません
- 3. レコードはPHPを表示していませんMySQL
- 4. データ配列を表示していません
- 5. CodeIgniterのクエリ配列は、最初のレコードを表示しますが、他の表示されません
- 6. Android Spinnerは配列を表示していませんが、場所を表示しています
- 7. DataGridViewはすべてのレコードを表示しません
- 8. VB.NET Comboboxはレコード名を表示していますが、データは表示されていませんか?
- 9. 最初のレコードは表示されていませんUNION ALL
- 10. Twilioは配信ステータスを表示していません
- 11. WCFプロキシは常に配列を表示していますが、リストは表示されません<T>
- 12. 2D配列はデータを表示しません
- 13. AngularJS ng-repeatはJSON配列を表示しません
- 14. AngularJSはMongoDBの配列内にオブジェクトを表示しません
- 15. ng-repeatは配列の要素を表示しません
- 16. SQLクエリはすべてのレコードを表示していません
- 17. infowindow.setContentはレコードを1つしか表示しません
- 18. forループ配列にレコードを格納して表示する
- 19. Crystal Reportsは1つのレコードしか表示していません
- 20. GridViewはuwpでレコードを表示しません
- 21. Odoo 8ツリービューは1レコードしか表示しません
- 22. mediawiki apiは配列の結果を表示できません。
- 23. HBase to Hiveマッピングテーブルが完全なデータを表示していません
- 24. それは$ _FILES/$には表示されません_ POST配列
- 25. 表には、列ヘッダーを表示しません列ヘッダー
- 26. `git log -p path/to/file`はすべての変更を表示しません
- 27. UI-Selectは配列にバインドされません(表示されません!)AngularJS
- 28. データを表示していません
- 29. Android:ProgressDialogを表示していません
- 30. 次のレコードの検索でデータを取り出して、空のフィールドを表示しているレコードに最初のレコードが表示されません。
:VAR GetMoreInfoUpdatedChangeTickets = Class.create(); GetMoreInfoUpdatedChangeTickets.prototype = {初期化:function(){}、getSysIds:function getMyGroupMembers(){\t var ga = new GlideRecord( 'sysapproval_group'); ga.addQuery( 'parent.sys_class_name'、 '='、 'change_request'); ga.query(); gs.log( "TotalRecords1 Before ::" + ga.getRowCount()); var sysIdArray = []; while(ga.next()){sysIdArray.push(ga.sys_id); \t} \t return sysIdArray; }、タイプ: 'GetMoreInfoUpdatedChangeTickets'}; –
実際に動作しているかどうかは、実際には言及していませんでした。 –
ここで、私は最初のコメントを、より多くの情報と解決策で更新しました。それを見て、次に必要な情報を提供してください。 –