RCRD_DSNT_EXIST“,”message“:” 没有此类型的记录

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

提问人:TheIronKing 提问时间:6/16/2022 最后编辑:TheIronKing 更新时间:6/17/2022 访问量:686

问:

好的,大家,非常透视这个。 非常感谢 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,这没有意义,我尝试启动的工作流旨在更改多个项目的字段,为什么我需要在脚本中指定单个项目?

/**
 * @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赞 Barmar 6/16/2022
当你正确地缩进它时,你可以看到你在函数后面有一个额外的,所以它不在函数内部。删除之前的 .)return)return
0赞 TheIronKing 6/16/2022
谢谢 Barmar,当我这样做时,错误更改为 - “缺少 ) 在参数列表之后”我认为这就是我首先放入括号的原因。我正在为这个剧本而苦苦挣扎。
0赞 Barmar 6/16/2022
对不起,需要删除的是整行。如上所述,如果您使用编辑器的自动缩进功能,您应该能够看到结构问题。})
0赞 TheIronKing 6/16/2022
不用抱歉,我很感激你试图提供帮助,尽管我感到陷入了已经发生了几个小时的疯狂错误的循环中。例如,现在的错误是:“无法评估脚本:执行定义回调时,所有 SuiteScript API 模块都不可用。
0赞 Barmar 6/16/2022
我不熟悉 SuiteScript,所以我无法帮助您。但这是一个不同的问题,与语法错误无关。

答:

1赞 bknights 6/17/2022 #1

你正在做的事情有几件事是错误的。这确实是一个RTM情况。

您可能只是想练习 API,所以并不真正关心脚本的类型,但 Netsuite 确实如此。它分析 NScriptType 注释,并拒绝您的脚本,因为不符合要求。

用户事件脚本的形状如下:


/**
 * @NApiVersion 2.0
 * @NScriptType UserEventScript
 */
define([module list], function(modules...){
    function beforeRecordSubmit(ctx){...} // these functions can use SuiteScript API Modules
    function beforeRecordSubmit(ctx){...}
    function afterRecordSubmit(ctx){...}

// you cannot use Suitescript API Modules outside of the returned functions

return {
    beforeLoad: beforeRecordLoad,
    beforeSubmit: beforeRecordSubmit,
    afterSubmit: afterRecordSumbit
};

});

还有这些行:

workflowTask.recordType = 'INVENTORY_ITEM';
workflowTask.recordId = 'Item';

看起来他们只是充满希望的猜测。如果您登录到Netsuite,则有有关所有这些的在线帮助。

评论

0赞 TheIronKing 6/17/2022
你好。感谢您的反馈,我知道我有很多东西需要学习和适应,但这是我所负责的一个庞大项目的一部分,我不是程序员。我查阅了联机帮助,记录类型的描述说:“工作流基本记录的记录类型 ID。使用记录中的值。键入枚举。这是“工作流定义”页上的“记录类型”字段。工作流定义页显示“记录类型项目(库存部件)”,但项目(库存部件)显示“无效的记录类型” 我可以请您就此提供指导吗?
0赞 bknights 6/17/2022
recordType可能只是您可能会尝试,但工作流目标记录包括项目而不是项目类型。 将是要为其触发工作流的清单项的内部 ID。'item''inventoryitem'recordId
0赞 TheIronKing 6/17/2022
谢谢。原来是“inventoryitem”。感谢您的意见。脚本现在正在尝试运行,但我有另一个错误,指出该记录不存在,并且此记录类型没有记录。这很令人抓狂,因为记录肯定存在,细节是剧本中的细节。我在上面已经详细介绍了。如果今天有机会看一眼,我将不胜感激。谢谢。
0赞 TheIronKing 6/17/2022
回想一下,我刚刚重读了你的上一条评论。“recordId 将是库存项的内部 ID” - 工作流本身旨在针对多个项目(而不是单个项目)执行操作,这将是徒劳的,该练习的想法是,当提交记录 X 时,工作流启动并更新记录 Y、Z 和 U。
0赞 Krypton 6/17/2022 #2

我可以看到 2 个问题:

  1. 您需要使用而不是 .以下NetSuite文档中的注释:define()require()

注意:此示例脚本使用 require 函数,以便您可以复制 它进入 SuiteScript 调试器并对其进行测试。您必须使用 define 入口点脚本中的函数(附加到脚本的脚本 记录和部署)。有关更多信息,请参阅 SuiteScript 2.x 脚本 基础知识和 SuiteScript 2.x 脚本类型。

  1. 您需要在块中实现入口点函数。对于这样的用户事件脚本,这意味着您需要 或 之一。returnbeforeLoadbeforeSubmitafterSubmit

对于您的示例,您的脚本最终将如下所示:

/**
 * @NApiVersion 2.0
 * @NScriptType UserEventScript
 */

define(['N/task'],
    function (task) {
        function workflowTask(scriptContext) {
            task.create({
                taskType: task.TaskType.WORKFLOW_TRIGGER
            });
            workflowTask.recordType = 'INVENTORY_ITEM';
            workflowTask.recordId = 'Item';
            workflowTask.workflowId = 'customworkflow14';
            var taskId = workflowTask.submit();
        }
        return {
            afterSubmit: workflowTask
        };
    }
);

评论

0赞 TheIronKing 6/17/2022
了不起。谢谢。我知道我还有很长的路要走,但我想把剧本放到沙盒上并开始实验。您的建议非常有效,最初的错误集都消失了。谢谢你,我真的很感谢你的时间。