是否有客户端功能可以在 Suitescript 中保存记录?

Is there a client side function to save record in Suitescript?

我正在尝试使用客户端脚本的 saveRecord 入口点重定向到另一个页面。

但是,为了做到这一点,我的理解是我需要先保存并提交记录。

有没有办法使用客户端脚本(即无需用户单击该按钮)来执行此操作(基本上复制当用户在记录上按下 Netsuite 的本机 'save' 按钮时发生的情况)?

我试过record.submitfields,虽然这不会触发saveRecord下的功能。

这不是一个纯粹的 SuiteScript 解决方案,它更像是一个纯粹的 JavaScript/Html 解决方案,我在我的代码中使用没有问题;如果您牢记 Netsuite UI 只是一个 Web 应用程序(它只是一个网站!),那么在客户端脚本上您可以做很多标准 SuiteScript 做不到的事情。

在您的情况下,您只需在代码中触发标准“保存”按钮的点击事件,因为 Netsuite 使用 jQuery,那么您可以这样做:

// your code
jQuery('#btn_multibutton_submitter').click();
// #btn_multibutton_submitter is just an example, get the right id of your button by checking the Netsuite page source code, or using Chrome Inspect 

如果您尝试重定向到记录 url,您可以使用 'N/url' 模块并在保存后立即调用 url.resolveRecord() API:

 url.resolveRecord({
     recordType: record.Type.EMPLOYEE,    
     isEditMode: true,
     params:{}
 })

这将是员工记录类型的示例。

我的建议是触发一次保存—— 就可以了。

但是,对于

的关键要求

[after save] to redirect to another page.

这有点诡异,因为保存它会重新加载页面,因此会刷新很多东西。

a) 打开新标签页还好吗?如果是,则使用 window.open(yourUrl).

打开一个新标签页

b) 您的新目的地是否需要原始记录中可能已更改的信息?如果是这样,那么您需要等到保存完成。

以下将有助于 a=no 和/或 b=yes。

在触发保存之前,您使用浏览器放置了一条信息。您有一段客户端脚本可以查找该信息,以便在重新加载页面时可以使用该信息加载新页面。

A 算法将是:

  1. 留下带有重定向指令的标志
  2. 触发保存
  3. 加载时寻找重定向标志
  4. 如果不存在则中断。
  5. 如果存在则执行 B。

B 算法将是:

  1. 将标志复制到变量中
  2. 如果有标志,请将其移除。
  3. 根据变量重定向

您可以使用 localstorage of the browser as the place to store this flag. You could also use sessionstorage,它会在会话结束时失效。

对于纯 NetSuite 解决方案,您可以检查存储会话变量的套件 (N/runtime)。还有一点工作。

注意:请记住删除您的标志或至少考虑该状态的到期时间(如果它“太旧”,请不要遵循它)。