我一般对 SuiteScript 或 javascript 不太熟悉(通常我只使用工作流程,但不能用于此特定字段“项目源”),但我目前正在尝试设置第 1 行(行号)项目如果选中自定义行字段“打包项目”(custcol_is_packout),则在工作流程编辑时,项目来源 (itemsource) 字段将更改为工作订单上的“库存”。我已经尝试自己编写代码,但老实说,我不确定从哪里开始,我只是尝试使用在线多个来源将其拼凑在一起。
这是我的代码(设置为用户事件脚本,不确定这是否正确):
/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
*/
define(['N/currentRecord', 'N/log', 'N/record'],
/**
* @param{currentRecord} currentRecord
* @param{log} log
* @param{record} record
*/
(currentRecord, log, record) => {
/**
* Defines the function definition that is executed before record is submitted.
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {Record} scriptContext.currentRecord - Current record
* @param {Record} scriptContext.oldRecord - Old record
* @param {string} scriptContext.type - Trigger type; use values from the context.UserEventType enum
* @since 2015.2
*/
const beforeSubmit = (scriptContext) => {
const curRec = scriptContext.currentRecord;
if (scriptContext.sublistId == 'item') {
const lineList = curRec.getCurrentSublistValue({
lineNum : 'linenumber',
packOut : 'custcol_is_packout'
});
if (lineNum == 0 && packOut == true) {
curRec.setCurrentSublistValue({
itemsource : 'Stock'
});
}
}
}
return {beforeSubmit}
});
我正在 NetSuite 中的脚本部署上处理事件类型(编辑)和上下文(工作流程),因此我没有在代码中添加任何内容来过滤这些内容。
您的脚本存在一些问题。
const curRec = scriptContext.currentRecord;
currentRecord
没有传入beforeSubmit()
上下文对象。有newRecord
、oldRecord
和type
。也许你想要的是const curRec = scriptContext.newRecord;
if (scriptContext.sublistId == 'item') {
再次强调,在
sublistId
上下文中没有 beforeSubmit
属性。这似乎来自 client 脚本。在这里使用时,它要么给出错误,要么总是评估为 false,这意味着 if
块中的代码永远不会运行。
const lineList = curRec.getCurrentSublistValue({
使用子列表 API 的“当前”版本时,您必须首先使用
Record.selectLine()
(或在您的情况下使用 curRec.selectLine()
)选择行,进行更改,然后使用 Record.commitLine()
提交该行。然而,即使这样也可能在这里不起作用,因为我知道在用户事件上下文中传递的记录处于“标准”或“延迟动态”模式,而“当前”API 用于处理“动态”模式记录。因此,您应该使用标准 API,例如 getSublistValue()
而不是 getCurrentSublistValue()
。
curRec.setCurrentSublistValue({
与上面相同的问题。
我正在 NetSuite 中的脚本部署上处理事件类型(编辑)和上下文(工作流程),因此我没有在代码中添加任何内容来过滤这些内容。
这意味着只有当
工作流编辑
部署脚本的类型的记录时,脚本才会运行。因此,当用户在 UI 中编辑它时,它可能无法运行 - 这真的是您想要的吗?