【问题标题】:What's the difference of Standard and Dynamic modes in NetSuite?NetSuite 中的标准模式和动态模式有什么区别?
【发布时间】:2018-11-02 11:07:51
【问题描述】:
请参阅 NetSuite 的 SuiteScript 2.0 API 文档。要设置子列表字段的值,请在 STANDARD 模式下使用“Record.setSublistValue(options)”。
DYNAMIC模式下,使用以下方法一一设置子列表字段值:
-
Record.selectLine(选项)
-
Record.setCurrentSublistValue(选项)
-
Record.commitLine(选项)
但是STANDARD和DYNAMIC模式是什么?
它们有什么区别?
【问题讨论】:
标签:
netsuite
suitescript2.0
【解决方案1】:
简而言之,DYNAMIC 模式会在您设置每个字段时运行字段采购和验证,而 STANDARD 模式(或延迟动态模式,在 NetSuite 文档中也称为)在您调用 record.save() 之前不会运行字段采购和验证。
这意味着 DYNAMIC 模式的行为更像 UI,您设置字段的顺序很重要。如果您手动设置来源字段,您最终获得的值可能取决于您是在触发来源的字段之前还是之后设置它。在 STANDARD 模式下,这不是问题 - 您将始终得到相同的值。
更多信息请见here(需要登录NetSuite)。
【解决方案2】:
动态意味着它在被操纵时立即做出反应。例如,当您将商品添加到动态加载的订单中时,total price 等字段将立即重新计算,您可以从记录中获取它们而不保存订单。
如果记录是非动态加载,则总价字段将在记录加载时具有值,并且在您保存记录之前不会更新.
当您在record.load 调用中使用isDynamic: true 时,记录以动态模式加载:
var r = record.load({
type: record.Type.SALES_ORDER,
id: 123,
isDynamic: true,
});
使用非动态记录会更快 - 如果您不打算使用动态记录,请不要使用它。 (例如,在保存记录之前获取总价。)