HRプロファイルを参照するフィールドのフィルター設定について
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-29-2025 08:13 PM
知識不足で申し訳ございませんがご教示いただきたく記事を作成しました。
HRプロファイルテーブルを参照する参照フィールドをカタログアイテムに作成しており、参照修飾子の設定を以下スクリプトで設定しようとしていますがうまく動作しません。
以下条件を満たすためにはどのようにスクリプトを改修する必要があるかご教示いただきたいです。
■条件
・部門テーブル(cmn_department)のうち、一意識別コード(ou)が「S99999999110」または「H00010001503」を割り当てられているユーザー
■参照修飾子
// 1. 部門情報を取得
var dep = new GlideRecord('cmn_department');
dep.addActiveQuery()
.addOrCondition('ou', 'CONTAINS', 'S99999999110')
.addOrCondition('ou', 'CONTAINS', 'H00010001503');
dep.query();
var DeptIds = [];
// 2. 取得した部門情報のIDをリストに保持
while (dep.next()) {
DeptIds.push(dep.sys_id.toString()); // ここでは部署のsys_idを保存
}
// 3. そのIDを使ってユーザーを取得
var usr = new GlideRecord('sys_user');
if (DeptIds.length > 0) {
usr.addQuery('department', 'IN', DeptIds.join(','));
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
02-01-2025 06:06 PM
cmn_department のQuery方法が少し意図する方法と違うようです。
その方法だと以下のようになります。
active=true^ORouCONTAINSS99999999110^ORouCONTAINSH00010001503
読みやすくすると: active = true OR ou CONTAINS S99999999110 OR ou CONTAINS H00010001503
3つの条件のどれかなので、Active Trueで該当するものが抽出されると思います。
気になる点として、こちらのPID(個人環境)では、"active" Field も "ou" Fieldもないです。
それがある想定で、ou が「S99999999110」または「H00010001503」と完全一致(=)するものを検索するなら、以下のようになります。"OR"の違いを確認してください。
active=true^ou=S99999999110^ORou=H00010001503
読みやすくすると: active=true AND ou = S99999999110 OR ou = H00010001503
"IN"を使うことでも良いです。
active=true^ouINS99999999110,H00010001503
Scriptは以下のようになります。
dep.addActiveQuery();
dep.addQuery('ou', 'S99999999110')
.addOrCondition('ou', 'H00010001503');
activeやouがもしカスタマイズで追加したのなら"u_active"や"u_ou"になると思います。