
在ServiceNow中,有时我们需要根据已选的引用字段值,动态地限制另一个引用字段的可用选项。例如,在关联用户和商品时,我们可能希望只显示尚未与该用户关联的商品。本文将介绍如何使用高级引用限定符和Script Include来实现这一功能。
配置引用字段的引用限定符
首先,在需要筛选的引用字段(例如 GoodsRef)的字典配置中,将“使用引用限定符”设置为“高级”。这允许我们使用JavaScript代码动态地生成引用限定符。
javascript: (new ScriptIncludeJS()).getNotLinkedGoods(current.user_name);
这段代码调用名为 ScriptIncludeJS 的 Script Include 中的 getNotLinkedGoods 函数,并将当前表单中的 user_name 字段的值作为参数传递给该函数。
创建Script Include
接下来,创建一个Client Callable的Script Include,用于生成动态的引用限定符。
导航到“系统定义”>“脚本包含”。
点击“新建”按钮。
填写以下信息:
var ScriptIncludeJS = Class.create();
ScriptIncludeJS.prototype = Object.extend(global.AbstractAjaxProcessor, {
getNotLinkedGoods: function(userID) {
// 创建用于存储要显示的商品的数组
var goods = [];
// 选择 LinkedTbl 表
var grObj = new GlideRecord('x_1234_pro_0_linkedtbl'); // 替换为你的关联表名
// 从表单中获取用户详细信息,该字段显示为 'userID'
// 对于上面选择的表,使用链接表
grObj.addQuery('user_name', userID); // 替换为你的用户引用字段名
grObj.query();
while (grObj.next()) {
// 准备商品名称数组,作为带有表对象的 PUSH
goods.push(grObj.goods_name.toString()); // 替换为你的商品引用字段名
}
// 构建并返回 sys_id NOT IN 查询
return 'sys_idNOT IN' + goods.toString();
},
type: 'ScriptIncludeJS'
});代码解释:
以下是一个完整的示例,展示了如何在 ServiceNow 中实现基于关联表筛选引用字段值的功能。
表结构:
Script Include (Client Callable):
var ScriptIncludeJS = Class.create();
ScriptIncludeJS.prototype = Object.extend(global.AbstractAjaxProcessor, {
getNotLinkedGoods: function(userID) {
var goods = [];
var grObj = new GlideRecord('u_link_table');
grObj.addQuery('user', userID);
grObj.query();
while (grObj.next()) {
goods.push(grObj.goods.toString());
}
return 'sys_idNOT IN' + goods.toString();
},
type: 'ScriptIncludeJS'
});u_new_link_table 表中 goods 字段的引用限定符:
javascript: (new ScriptIncludeJS()).getNotLinkedGoods(current.user);
通过使用高级引用限定符和 Script Include,我们可以轻松地在 ServiceNow 中实现基于关联表筛选引用字段值的功能。这可以帮助我们确保数据的完整性,并提高用户的效率。这种方法可以应用于各种场景,例如限制可选的配置项、筛选可用的服务等等。只需要根据实际需求修改表名、字段名和查询条件即可。
以上就是基于关联表和引用字段筛选引用字段值的教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号