2016-10-22 28 views
2

能否給出一個關於如何執行分組或求和查詢的可靠示例,即「Jane Smith在本月執行了多少個銷售訂單」。 2.0版的NetSuite幫助中心示例和文檔非常分散,不完整。在SuiteScript 2.0中執行求和或分組查詢

任何幫助,將不勝感激。以下是我使用的代碼。它返回一個UNKNOWN錯誤。如果更改search.Summary.GROUP和search.Summary.COUNT爲小寫(search.Summary.group等),那麼你得到一個結果,其中定單計數列實際上包含內部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。等)

{ 
    "error": false, 
    "msg": "TESTING_POST_METHOD", 
    "data": [ 
     { 
      "title": "Order Count by Sales Rep", 
      "details": "Victor Beisel has sold 524963 orders." 
     } 
    ] 
} 

在細節關鍵的數量是銷售的內部ID秩序,而不是真正的國家噸。這裏是結果,當您使用由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 
} 

回答

4
// 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; 
}); 

按月明確指出分組的資本總結令牌(search.Summary。GROUP,等等)是你有點難度需要在適當的日期字段上使用TO_CHAR的公式以獲得正確的月份。

+0

語法正確,但它僅返回1個日誌。而orderCount變量是持有實際的內部id,而不是一個計數。我問這個問題的最初原因是因爲我們認爲這可能是2.0中的另一個bug,因爲我們嘗試過各種語法,並且我們得到一個錯誤,或者1結果「count」不正確,並返回字段值 – Coldstar

+0

此外,search.Summary.GROUP和search.Summary.COUNT會拋出上述錯誤。將GROUP和COUNT更改爲小寫只返回1結果,但沒有錯誤 – Coldstar

+0

請發佈您的代碼。 – erictgrubaugh