Netsuite SuiteScript不返回列的值

时间:2017-05-16 16:02:38

标签: netsuite suitescript

我在通过SuiteScript获取已保存搜索中的列值时遇到了一些麻烦。以下是我的代码:

function KW_AutoCloseOldRA() {
    var search = nlapiLoadSearch('transaction', 'customsearchopen_ras', null, null);
    var columns = search.getColumns();
    for (i = 0; i < columns.length; i++) {
        nlapiLogExecution('DEBUG', 'Column #' + i + ' is ' + columns[i].getName());
    }
    var results = search.runSearch();
    if (results) {
        results.forEachResult(getResults);
    }
}

function getResults(res) {
    var message = res.getValue('tranid');
    nlapiLogExecution('DEBUG', 'Result ' + message);
    return true;
}

搜索产生两列,这些列的名称按预期在DEBUG条目中输出(internalid是第0列,tranid是第1列)。但是,当循环遍历结果时,res.getValue('tranid')始终为null。我似乎无法在这里找到我做错的事。

1 个答案:

答案 0 :(得分:3)

尝试使用columns对象及其索引获取值,如下所示:

function KW_AutoCloseOldRA() {
    var search = nlapiLoadSearch('transaction', 'customsearchopen_ras', null, null);
    var columns = search.getColumns();
    for (i = 0; i < columns.length; i++) {
        nlapiLogExecution('DEBUG', 'Column #' + i + ' is ' + columns[i].getName());
    }
    var results = search.runSearch();
    if (results) {
        results.forEachResult(getResults);
    }
}

function getResults(res) {
    var cols =  res.getAllColumns();
    var message = res.getValue(cols[1]);
    nlapiLogExecution('DEBUG', 'Result ' + message);
    return true;
}