Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netsuite 在SuiteScript 2.0中执行求和或分组查询_Netsuite_Suitescript - Fatal编程技术网

Netsuite 在SuiteScript 2.0中执行求和或分组查询

Netsuite 在SuiteScript 2.0中执行求和或分组查询,netsuite,suitescript,Netsuite,Suitescript,任何人都可以给出一个如何执行分组或汇总查询的可靠示例,例如suitescript 2.0中的“Jane Smith本月完成了多少销售订单”。NetSuite帮助中心2.0版的示例和文档非常分散和不完整 任何帮助都将不胜感激。下面是我使用的代码。返回一个未知错误。如果将search.Summary.GROUP和search.Summary.COUNT更改为小写(search.Summary.GROUP等),则会得到一个结果,orderCount列实际上包含内部id,而不是聚合计数 var resu

任何人都可以给出一个如何执行分组或汇总查询的可靠示例,例如suitescript 2.0中的“Jane Smith本月完成了多少销售订单”。NetSuite帮助中心2.0版的示例和文档非常分散和不完整

任何帮助都将不胜感激。下面是我使用的代码。返回一个未知错误。如果将search.Summary.GROUP和search.Summary.COUNT更改为小写(search.Summary.GROUP等),则会得到一个结果,orderCount列实际上包含内部id,而不是聚合计数

var results = [],
        GROUP = search.Summary.GROUP,
        COUNT = search.Summary.COUNT;

var mySalesOrderSearch = search.create({
    type: 'salesorder',
    columns: [
        "trandate",
        {
            name: 'salesrep',
            summary: GROUP
        }, {
            name: 'internalid',
            summary: COUNT
        }],
    filters: [{
        name: 'mainline',
        operator: 'is',
        values: ['T']
    }, {
        name: "trandate",
        operator: "within",
        values: ["thisyear"]
    }]
});

mySalesOrderSearch.run().each(function (result) {
    var repName = result.getText({
        "name": "salesrep",
        "summary": GROUP
    });

    var orderCount = parseInt(result.getValue({
        "name": "internalid",
        "summary": COUNT
    }), 10);

    var msg = {
        "title": "Order Count by Sales Rep",
        "details": repName + " has sold " + orderCount + " orders."
    };

    results.push(msg);
    log.debug(msg);
});

return results;
这是我将摘要更改为小写时的结果(search.summary.group等)

详细信息键中的编号是销售订单的内部id,而不是真实计数。下面是使用NetSuite文档中规定的大写摘要标记(search.summary.GROUP等)时的结果

{
    "error": true,
    "msg": {
        "type": "error.SuiteScriptError",
        "name": "UNEXPECTED_ERROR",
        "message": null,
        "stack": [
            "each(N/searchObject)",
            "TESTING_POST_METHOD(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:159)",
            "<anonymous>(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:40)",
            "post(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:117)"
        ],
        "cause": {
            "type": "internal error",
            "code": "UNEXPECTED_ERROR",
            "details": null,
            "userEvent": null,
            "stackTrace": [
                "each(N/searchObject)",
                "TESTING_POST_METHOD(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:159)",
                "<anonymous>(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:40)",
                "post(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:117)"
            ],
            "notifyOff": false
        },
        "id": "",
        "notifyOff": false
    },
    "data": null
}
{
“错误”:正确,
“味精”:{
“类型”:“error.SuiteScriptError”,
“名称”:“意外错误”,
“消息”:空,
“堆栈”:[
“每个(N/searchObject)”,
“测试后处理方法(/SuiteScripts/XpelAffiliateOrders/XPELSS2\u 3PO\u Index.js:159)”,
“(/SuiteScripts/XpelAffiliateOrders/XPELSS2\u 3PO\u Index.js:40)”,
“post(/SuiteScripts/XpelAffiliateOrders/XPELSS2\u 3PO\u Index.js:117)”
],
“原因”:{
“类型”:“内部错误”,
“代码”:“意外错误”,
“详细信息”:空,
“userEvent”:null,
“stackTrace”:[
“每个(N/searchObject)”,
“测试后处理方法(/SuiteScripts/XpelAffiliateOrders/XPELSS2\u 3PO\u Index.js:159)”,
“(/SuiteScripts/XpelAffiliateOrders/XPELSS2\u 3PO\u Index.js:40)”,
“post(/SuiteScripts/XpelAffiliateOrders/XPELSS2\u 3PO\u Index.js:117)”
],
“notifyOff”:false
},
“id”:“,
“notifyOff”:false
},
“数据”:空
}
//假设N/search作为's'导入`
var mySalesOrderSearch=s.create({
键入:“销售订单”
//使用列的summary属性执行分组/汇总
栏目:[{
姓名:“salesrep”,
总结:s.summary.GROUP
},{
名称:“internalid”,
摘要:s.summary.COUNT
}],
过滤器:[{
名称:'主线',
接线员:'是',
值:['T']
}]
});
mySalesOrderSearch.run().each(函数(结果){
var repId=result.getValue({
“名称”:“salesrep”,
“摘要”:s.summary.GROUP
});
var repName=result.getText({
“名称”:“salesrep”,
“摘要”:s.summary.GROUP
});
var orderCount=parseInt(result.getValue({
“名称”:“内部ID”,
“汇总”:s.summary.COUNT
}), 10);
log.debug({
“标题”:“销售代表的订单数量”,
“详细信息”:repName+“已售出”+orderCount+“订单。”
});
返回true;
});

具体按月份分组有点困难,因为您需要在相应的日期字段上使用带有
to_CHAR
的公式来获得正确的月份。

语法正确,但只返回1个日志。orderCount变量保存的是实际的internalid,而不是计数。我问这个问题的最初原因是,我们觉得这可能是2.0中的另一个错误,因为我们尝试了各种语法,要么得到一个错误,要么得到一个“count”不正确的结果,并返回字段值。另外,search.Summary.GROUP和search.Summary.count抛出上述错误。将GROUP和COUNT更改为小写仅返回1结果,但无错误根据您给出的示例,我使用的代码张贴在AFAIK上方。当您在SuiteScript中执行摘要搜索时,必须以某种方式对所有列进行分组或摘要。尝试删除您的
trandate
列,或者在其上添加分组/摘要。通过确保所有列的摘要都正确,您是对的。我们也错过了“返回真值;”在mySalesOrderSearch.run()的最后一行,每个主体。
{
    "error": true,
    "msg": {
        "type": "error.SuiteScriptError",
        "name": "UNEXPECTED_ERROR",
        "message": null,
        "stack": [
            "each(N/searchObject)",
            "TESTING_POST_METHOD(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:159)",
            "<anonymous>(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:40)",
            "post(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:117)"
        ],
        "cause": {
            "type": "internal error",
            "code": "UNEXPECTED_ERROR",
            "details": null,
            "userEvent": null,
            "stackTrace": [
                "each(N/searchObject)",
                "TESTING_POST_METHOD(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:159)",
                "<anonymous>(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:40)",
                "post(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:117)"
            ],
            "notifyOff": false
        },
        "id": "",
        "notifyOff": false
    },
    "data": null
}