我正在尝试让我正在开发的应用程序显示给定客户记录的所有关联用户注释(正如它显示在 Netsuite 中的 UI 客户记录页面上一样)。
为此,我设置了一个 Netsuite RESTlet,以返回给定客户内部 ID 的关联注释记录的内部 ID 列表。
我在 RESTlet 脚本中设置了一个简单的搜索:
function get_notes(params) {
log("GET params", JSON.stringify(params));
var filters = [
new nlobjSearchFilter('internalid', 'customer', 'is', params.id)
];
var columns = [
new nlobjSearchColumn('internalid'),
new nlobjSearchColumn('note'),
];
var search = nlapiCreateSearch('note', filters, columns);
var notes = search.runSearch().getResults(0, 3);
return notes;
}
function log(msg, details) {
nlapiLogExecution('DEBUG', msg, details);
}
脚本按预期工作,但问题是此搜索仅返回 author
字段(用户内部 ID)与执行搜索的用户的内部 ID 匹配的注释。含义 - 您只能搜索您作为作者的注释。
我被告知,出于某种深不可测的安全原因,这是 Netsuite 的一项“功能”。
我需要能够获取所有关联笔记 ID 的列表,而不仅仅是那些发出请求的用户是其作者的列表。
关于获取所有相关注释的解决方法有什么想法吗?构建搜索的不同方式?某种 secret 方法来定义您自己的自定义搜索连接?
我什至找不到有关此行为的文档(阻止非作者的注释搜索)。也许有人知道如何在管理员级别覆盖它?
我还没有准备好承认这是不可能的。
注意:用户注释是与客户记录关联的注释类型记录,而不是客户记录上的字段,因此我无法直接从客户访问它。注释或用户注释也没有搜索过滤器或搜索连接。
最佳答案
使用 RESTlet,您无法获取其他用户的注释,除非您使用管理员/完全访问权限等角色的凭据/ token 来调用 RESTlet。 RESTlet 始终在当前用户的上下文中运行。
如果您确实必须以任何方式实现这一目标,则有一种替代方法:
1) 在客户上创建一个用户事件脚本,该脚本创建模拟系统注释功能的自定义记录。
2) 确保 RESTlet 用户角色对自定义记录具有完全级别的访问权限,并使客户成为自定义记录的父级。
3) 在您的 RESTlet 中返回自定义记录。
关于netsuite - 按客户 ID 搜索 Netsuite Note 记录的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34322882/