首页 文章

按客户ID搜索Netsuite Note记录的解决方法

提问于
浏览
2

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

为此,我设置了一个Netsuite RESTlet,以便在给定Customer内部标识的情况下返回相关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 字段(用户内部标识)与执行搜索的用户的内部标识匹配 . 含义 - 您只能搜索您作为作者的Notes .

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

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

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

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

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

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

2 回答

  • 1

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

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

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

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

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

  • 1

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

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

相关问题