Netsuite 建议在导入的Web服务事务上运行SuiteScripts的方法是什么?

Netsuite 建议在导入的Web服务事务上运行SuiteScripts的方法是什么?,netsuite,suitescript2.0,Netsuite,Suitescript2.0,我目前运行一个用户事件脚本,其中包含一个Before Submit函数,该函数为每个事务填充自定义列字段。因为它是一个用户事件脚本,所以它不会在通过Web服务导入的事务(如POS发票)上启动 编辑:根据下面的评论,这是我的误解。用户事件脚本在Web服务上运行 如果要修改每个导入事务的自定义字段,最好使用哪种脚本?记录提交工作后是否会触发工作流操作脚本?如果我同时导入多个事务,会有问题吗 如果在导入事务时没有一个好的方法来执行此操作,我可能只会运行一个调度脚本或Map/Reduce脚本,在事件发生

我目前运行一个用户事件脚本,其中包含一个Before Submit函数,该函数为每个事务填充自定义列字段。因为它是一个用户事件脚本,所以它不会在通过Web服务导入的事务(如POS发票)上启动

编辑:根据下面的评论,这是我的误解。用户事件脚本在Web服务上运行

如果要修改每个导入事务的自定义字段,最好使用哪种脚本?记录提交工作后是否会触发工作流操作脚本?如果我同时导入多个事务,会有问题吗

如果在导入事务时没有一个好的方法来执行此操作,我可能只会运行一个调度脚本或Map/Reduce脚本,在事件发生后更新这些记录

下面是UE脚本。它查看交易中的每一行,从底部开始,将折扣信息添加到上面的行(如果适用)

/**
*@NApiVersion 2.0
*@NScriptType UserEventScript
*/
定义([],函数(){
返回{
提交前:函数(上下文){
//获取记录和行计数
var currentRecord=context.newRecord;
var count=currentRecord.getLineCount({
子列表:'item'
}); 
//初始折扣额
var贴现量=0;
//对于每一行,从底部开始
对于(变量i=(计数-1);i>=0;i--){
//获取数据
变量类型=currentRecord.getSublistValue({
子列表:“项”,
fieldId:'itemtype',
线路:我
});
var金额=currentRecord.getSublistValue({
子列表:“项”,
fieldId:'金额',
线路:我
});
变量数量=currentRecord.getSublistValue({
子列表:“项”,
fieldId:'数量',
线路:我
});
如果(类型=‘折扣’){
//如果有折扣,则添加到当前折扣金额
折扣额+=金额;
}否则{
//解析数据
金额=浮动(金额);
数量=parseInt(数量);
折扣挂载=parseFloat(折扣挂载);
//设置变量
计算金额=(金额+折扣金额).toFixed(2);
计算利率=((金额+折扣额)/数量);
计算的贴现=(贴现量).toFixed(2);
//更新子列表
currentRecord.SetPublistValue({
子列表:“项”,
fieldId:“客户计算金额”,
台词:我,,
值:calculatedAmount
});
currentRecord.SetPublistValue({
子列表:“项”,
fieldId:“客户计算费率”,
台词:我,,
值:calculaterate
});
currentRecord.SetPublistValue({
子列表:“项”,
fieldId:'客户折扣',
台词:我,,
值:calculatedDiscount
});
log.debug('discountAmount',discountAmount);
//重置当前折扣金额
折扣量=0;
}
}
}
}
})
因为它是一个用户事件脚本,所以它不会在通过Web服务导入的事务上启动

这不是它的工作原理。您的上述假设可能是基于混淆的脚本类型名称而做出的,该名称可能会被意外识别,因为只有当用户从用户界面创建记录时才会触发。但是,实际上,文档概述了用户事件脚本在以下情况下触发:

…客户端请求可以来自用户界面、SOAP web服务、服务器端SuiteScript调用、CSV导入或XML


因此,您的脚本中可能有某种东西可以过滤掉来自Web服务的请求。您能分享代码吗?想了解更多详细信息吗?

谢谢您的关注。在过去,我遇到了UE脚本无法在预期的情况下运行的问题,因此很高兴知道这可能只是我自己的问题。我已将脚本添加到问题中。在部署用户事件脚本时,是否排除了Web服务上下文?部署看起来正确。我注意到脚本没有在从NSPO导入的发票上运行。我现在无法测试它们,但我能够测试销售订单的不同集成,并且我的UE脚本可以很好地运行。