SuiteScript 2.0 search.create 返回空结果

SuiteScript 2.0 search.create returning empty results

我正在尝试获取所有在创建新销售订单时待执行的销售订单。这是为了提醒用户销售订单已经在进行中。我使用的代码是这样的;

    function saleOrderInPendingFulfillmentAlreadyExists(scriptContext)
    {
        //Check if the customer already has an order which is pending fulfillment
        debugger;
        var idCustomer = scriptContext.currentRecord.getValue('entity');
        var recCustomer;
        if(idCustomer)
        {
            var filters = [
               ["mainline", "is", "T"], "and",
               ["type", "anyOf", search.Type.SALES_ORDER], "and",
               ["entity", "anyOf", idCustomer],
           ];

           var columns = [ "tranid" ];

           var searchQuery = search.create({
               "type": search.Type.TRANSACTION,
               "filters": filters,
               "columns": columns
           });

           var salesorders = searchQuery.run().getRange({"start": 0, "end": 1000}) || [];

        }
    }

调试代码时,变量 salesorders 是一个空数组,但我知道客户文件中至少有 8 个销售订单。我做错了什么?

您的问题是 type 搜索过滤器要求记录采用与 search.Type 枚举不同的格式('SalesOrd' 而不是 'salesorder')。欢迎使用 NetSuite!

您可以将过滤器更改为

var filters = [
   ["mainline", "is", "T"], "and",
   ["type", "anyOf", 'SalesOrd'], "and",
   ["entity", "anyOf", idCustomer],
];

或者,甚至更好

var searchQuery = search.create({
   "type": search.Type.SALES_ORDER,
   "filters": filters,
   "columns": columns
});

顺便说一句,您绝对应该查看 NetSuite Search Export Chrome Extension,它可以让您在 UI 中构建搜索并自动将其转换为 SuiteScript。