在SuiteScript 2.0中执行Sum或Grouped查询

Col*_*tar 3 netsuite suitescript

任何人都可以举例说明如何执行分组或总结查询,即" 本月Jane Smith完成了多少个销售订单 ".NetSuite帮助中心2.0的示例和文档是如此分散和半生不熟的imho.

任何帮助,将不胜感激.以下是我正在使用的代码.返回UNKNOWN ERROR.如果您将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;
Run Code Online (Sandbox Code Playgroud)

这里是结果,当我改变了总结小写(search.Summary.等)

{
    "error": false,
    "msg": "TESTING_POST_METHOD",
    "data": [
        {
            "title": "Order Count by Sales Rep",
            "details": "Victor Beisel has sold 524963 orders."
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

详细信息键中的524963编号是销售订单的内部ID,而不是真实计数.这里是结果,当您使用大写总结令牌(search.Summary.集团由NetSuite的文档说明,等等)

{
    "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
}
Run Code Online (Sandbox Code Playgroud)

eri*_*ugh 6

// Assuming N/search is imported as `s`
var mySalesOrderSearch = s.create({
    type: 'salesorder'
    // Use the summary property of a Column to perform grouping/summarizing
    columns: [{
        name: 'salesrep',
        summary: s.Summary.GROUP
    },{
        name: 'internalid',
        summary: s.Summary.COUNT
    }],
    filters: [{
        name: 'mainline',
        operator: 'is',
        values: ['T']
    }]
});

mySalesOrderSearch.run().each(function (result) {
    var repId = result.getValue({
        "name": "salesrep",
        "summary": s.Summary.GROUP
    });
    var repName = result.getText({
        "name": "salesrep",
        "summary": s.Summary.GROUP
    });
    var orderCount = parseInt(result.getValue({
            "name": "internalid",
            "summary": s.Summary.COUNT
    }), 10);

    log.debug({
        "title": "Order Count by Sales Rep",
        "details": repName + " has sold " + orderCount + " orders."
    });
    return true;
});
Run Code Online (Sandbox Code Playgroud)

按月分组特别困难,因为您需要TO_CHAR在相应的日期字段中使用公式来获得正确的月份.

  • 在SuiteScript中执行汇总搜索时,AFAIK必须以某种方式对所有*列进行分组或汇总.尝试删除`trandate`列,或者在其上添加分组/摘要. (2认同)