2

我正在尝试获取我正在开发的应用程序来显示给定客户记录的所有关联用户注释(因为它显示在 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);
}

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

我被告知这是 Netsuite 的一个“功能”,出于某种深不可测的安全原因。

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

关于获得所有相关注释的解决方法的任何想法?构建搜索的不同方式?某种秘密方式来定义您自己的自定义搜索连接?

我什至找不到关于这种行为的文档(阻止非作者的笔记搜索)。也许有人知道如何在管理员级别覆盖它?

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

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

4

2 回答 2

1

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

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

于 2015-12-17T00:47:48.390 回答
1

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

如果你真的要做到这一点,那么另一种方法是:

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

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

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

于 2015-12-17T16:56:51.837 回答