使用搜索中的公式从保存的搜索中填充Suitelet子列表

时间:2018-10-02 21:07:36

标签: netsuite suitescript

@bknights发布了一个有关在套件中填充子列表的另一个问题的好答案。

但是,在使用bk的代码时,我的问题随之而来:

function getJoinedName(col) {
    var join = col.getJoin();
    return join ? col.getName() + '__' + join : col.getName();
}
searchResults[0].getAllColumns().forEach(function(col) {
    sublist.addField(getJoinedName(col), 'text', col.getLabel());
    nlapiLogExecution('DEBUG', 'Column Label', col.getLabel());
});
var resolvedJoins = searchResults.map(function(sr) {
    var ret = {
        id: sr.getId()
    };
    sr.getAllColumns().forEach(function(col) {
        ret[getJoinedName(col)] = sr.getText(col) || sr.getValue(col);
    });
    return ret;
});
sublist.setLineItemValues(resolvedJoins);

以上内容适用于不带公式的标准搜索...当我有多个包含公式的搜索列时怎么办?

使用API​​1.0

2 个答案:

答案 0 :(得分:0)

您只需获取搜索结果的所有列。 columns = result[0].getColumns()。引用公式列所在的列。因此,如果您查看的是用户界面,它是自上而下的第三个,则可以使用result[0].getValue(columns[2])

获取值

此解决方案取决于行的顺序不变。

如果保存的搜索中有公式的标签,则只需将标签用作字段ID。

答案 1 :(得分:0)

在搜索定义中,将标签添加到所有公式列。然后,您的列键可以像这样导出:

function getJoinedName(col) {
    if(col.getName().indexOf('formula') === 0 && col.getLabel()){
      return 'lbl_'+ col.getLabel().toLowerCase();
    }
    var join = col.getJoin();
    return join ? col.getName() + '__' + join : col.getName();
}