按客户ID

时间:2015-12-16 21:59:17

标签: netsuite suitescript

我试图获取一个应用程序,我正在努力显示给定客户记录的所有相关用户注释(因为它显示在Netsuite中的UI客户记录页面上)。

为此,我设置了一个Netsuite RESTlet,以便在给定客户内部ID的情况下返回相关Note记录的内部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);
}

该脚本按预期工作,但问题是此搜索仅返回Notes,author字段(用户内部ID)与执行搜索的用户的内部ID匹配。含义 - 您只能搜索您作为作者的Notes。

我被告知这是一个'功能'因为一些不可思议的安全原因,Netsuite。

我需要能够获得所有相关Note ID的列表,而不仅仅是那些发出请求的用户是作者的列表。

有关解决方法的任何想法,以获取所有相关的Notes?构建搜索的另一种方式是什么?某种秘密方式来定义自己的自定义搜索联接?

我甚至无法找到有关此行为的文档(阻止来自非作者的注释搜索)。也许有人知道如何在管理员级别覆盖它?

我还没准备好承认这是不可能的。

注意:用户注释是与客户记录关联的注释类型记录,而不是客户记录中的字段,因此我无法直接从客户访问它。 “注释”或“用户注释”也没有“搜索过滤器”或“搜索连接”。

2 个答案:

答案 0 :(得分:1)

基本上,RESTLETS始终以调用它们的用户身份运行。 如果您可以使用Suitelet,则可以将其设置为以管理员身份运行,并且可以返回您可以搜索的任何Notes。

你真的需要Restlet吗?即您是从外部应用程序调用此函数,还是在尝试在NS GUI中添加功能?如果是后者,那么您可以轻松使用Suitelet。

答案 1 :(得分:1)

使用RESTlet除非使用管理员/完全访问等角色的凭据/令牌调用RESTlet,否则无法获取其他用户的注释。 RESTlet始终在当前用户的上下文中运行。

这样做的另一种选择,如果你真的必须实现这一点:

1)在customer上创建一个用户事件脚本,创建一个模拟系统注释功能的自定义记录。

2)确保RESTlet用户角色对自定义记录具有完全级别的访问权限,并使客户成为自定义记录的父级。

3)在RESTlet中返回自定义记录。