RCRD_DSNT_EXIST“,”message“:” 没有此类型的记录 - 已扩展

RCRD_DSNT_EXIST","message":" There are no records of this type - Extended

提问人:TheIronKing 提问时间:6/17/2022 更新时间:6/17/2022 访问量:56

问:

好的,大家,非常透视这个。非常感谢 Barmar、Kryton 和 bknights,他们的智慧帮助我走到了这一步。

脚本已更改,现在在下面。我可以上传它并生成脚本记录,它确实尝试运行,但现在我收到此错误:

“type”:“错误。SuiteScriptError“,”name“:”RCRD_DSNT_EXIST“,”message“:”没有此类型的记录“,”stack“:[”createError(N/error)“,”initiateWorkflow(/SuiteScripts/grn20.js:9)“],”cause“:{”type“:”内部错误“,”code“:”RCRD_DSNT_EXIST“,”details“:”没有此类型的记录“,”userEvent“:”aftersubmit“,”stackTrace“:[”createError(N/error)“,”initiateWorkflow(/SuiteScripts/grn20.js:9)“],”notifyOff“:false},”id“:”“,”notifyOff“:false,”userFacing“:false}

但记录确实存在,ID 号和工作流 ID 与工作流中指定的相同。

还有什么原因可能导致此问题?

提前感谢您的任何建议!

编辑 - 我被告知下面的记录 ID 应该引用项目的内部 ID,这没有意义,我尝试启动的工作流旨在更改多个项目的字段,为什么我需要在脚本中指定单个项目?

编辑 2 - 重新发布,因为我不确定问题是否已得到回答,是否会显示在提要中。

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 */

define(['N/workflow', 'N/search', 'N/error', 'N/record'],
    function (workflow, search, error, record) {
        function initiateWorkflow(scriptContext) {
               var workflowInstanceId = workflow.initiate({
                recordType: 'inventoryitem',
                recordId: 35,
                workflowId: 'customworkflow14'
            });
            var inventoryitemRecord = record.load({
                type: record.Type.INVENTORY_ITEM,
                id: 35
            });
        }
        return {
            afterSubmit: initiateWorkflow
        };
    }); 
JavaScript 工作流 NetSuite Suite脚本 套件Script2.0

评论

0赞 Krypton 6/17/2022
工作流以特定记录类型为目标,并通过以下两种方式之一触发:1) 基于事件,在这种情况下,目标类型的记录上的事件将触发工作流,或 2) 计划,在这种情况下,为指定的保存搜索返回的每个结果触发工作流实例。无论哪种情况,工作流实例都需要一个与目标类型的记录匹配的内部 ID,以便知道要定位的特定记录。不确定这是否有助于使任何事情更清楚,但您上面的粗体编辑存在一个根本性的误解。希望这有助于澄清它。
0赞 TheIronKing 6/18/2022
谢谢Krytpon。我的印象是,可以通过脚本手动激活工作流,这将否定指定的计划或事件,并导致工作流中指定的操作在脚本运行时激活。从你的回答来看,情况显然并非如此,对我来说,这代表了 Nestuite 的一个深刻缺陷。我不是程序员,但我做了许多工作流程,但 30 分钟的调度是一个限制,我需要在收到新商品和平均成本变化时实时执行操作。感谢您抽出时间接受采访。
0赞 TheIronKing 6/18/2022
Netsuite 文档指出了这一点 - “ 按需启动工作流。此方法以编程方式等同于 SuiteFlow 中的“启动工作流操作”操作。返回用于根据记录跟踪工作流的工作流实例的内部 ID。我觉得这具有误导性,并给人留下了您可以使用脚本按需启动工作流的印象。
0赞 Krypton 6/18/2022
好吧,首先:我可能在某些方面是错的,所以不要把它当作福音——保持好奇心,尝试并尝试思考当你得到你意想不到的结果/行为时幕后发生了什么。第二:NetSuite的文档还有很多不足之处,尽管它比7年前我担任您的职位时要好得多。也就是说,根据我的文档和观察结果,我的理解是,API 调用了工作流的单个实例。如果您查看“启动工作流操作”的文档,您可以了解这有什么意义 - 请参阅下一条评论。
0赞 Krypton 6/18/2022
使用“启动工作流”操作可以从当前工作流实例启动另一个工作流实例,以并行处理多个工作流。使用“启动工作流”操作启动的工作流实例或子工作流在与父工作流实例相同的记录实例上运行。例如,如果在采购订单上运行的工作流实例使用“启动工作流”操作启动子工作流实例,则这两个工作流实例将在同一采购订单上运行。

答: 暂无答案