使用自定义角色时NetSuite ClientScript无法运行求助
针对你遇到的问题——管理员角色下脚本正常执行,自定义角色能触发fieldChanged(可打印前两条日志)但无法进入sublistId == 'item' && sublistFieldName == 'item'的判断逻辑,核心原因是这两个变量在自定义角色环境下的实际值不符合预期,具体分析如下:
子列表/字段内部ID的环境差异
NetSuite的内部ID理论上全局一致,但在多语言场景下,若自定义角色使用非英语界面,极少数情况下API返回的sublistId或fieldId会被本地化;另外,若自定义角色绑定了自定义表单,不要把表单上的字段显示名称当成内部ID(脚本判断的是内部ID)。
排查:用浏览器开发者工具查看自定义角色下对应子列表和字段的HTML属性,找到id或name中的内部ID(格式如item),对比脚本中的判断值。字段级权限限制
即使给了记录的全权限,若自定义角色对item子列表下的item字段没有编辑权限,或字段被设为隐藏(即使表单强制显示),可能导致fieldChanged触发时context.fieldId返回异常。
排查:进入角色权限设置,找到对应记录类型的「字段级权限」,确认item字段权限为「编辑」且可见。脚本缓存未刷新
自定义角色可能仍加载旧版本的脚本缓存,导致判断逻辑未生效。
排查:让用户清除浏览器缓存,或重新保存脚本部署记录强制刷新缓存。记录类型/子列表的场景差异
确认自定义角色访问的记录类型与管理员完全一致(比如管理员用标准销售订单,自定义角色用自定义订单副本),部分自定义记录的子列表ID可能不是item。
排查:对比两类角色访问的记录类型,查看子列表的内部ID是否一致。
内容的提问来源于stack exchange,提问作者Mingo

