javascript - Netsuite 将搜索保存到 Suitelet 子列表

标签 javascript netsuite suitescript

我正在尝试使用我已经创建的自定义保存搜索中的数据填充套件中的子列表。我的问题是,子列表仅填充与我正在执行的已保存搜索“类型”相对应的字段中的数据。例如,在该实例中,保存的搜索是“事务”类型搜索。例如,如果我想通过保存的搜索引用客户字段,例如“姓名”和“帐单地址”,则此数据将不会填充套件中的子列表。交易记录本身引用的所有其他字段都会填充子列表。我只是想知道是否有人遇到过同样的问题,无论如何,这是我正在尝试实现的代码。

 var form,
    sublist;

    //GET
if (request.getMethod() == 'GET')
    {      
        //create form
        form = nlapiCreateForm('Test Custom Suitelet Form', false);

        //create sublist to show results
        sublist = form.addSubList('custpage_sublist_id', 'list', 'Item List');


        //form buttons
        form.addSubmitButton('Submit');
        form.addResetButton('Reset');

        // run existing saved search
        var searchResults = nlapiSearchRecord('transaction','customsearchID');
        var columns = searchResults[0].getAllColumns();

        // Add the search column names to the sublist field
        for ( var i=0; i< columns.length; i++ )
            {
                sublist.addField(columns[i].getName() ,'text', columns[i].getLabel() ); 
                nlapiLogExecution('DEBUG', 'Column Label',columns[i].getLabel());
            }

        //additional sublist fields
        sublist.addMarkAllButtons();
        sublist.addField('custfield_selected', 'checkbox', 'Selected');

        sublist.setLineItemValues(searchResults)

        response.writePage(form);

    }

最佳答案

如果您查看 nlobjSublist 文档,您会发现 sublist.setLineItemValues 也可以采用哈希数组。有效的是:

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);

关于javascript - Netsuite 将搜索保存到 Suitelet 子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33742377/

相关文章:

javascript - 在javascript中检索点击元素的getAttribute

javascript - 根据日期属性对 javascript 对象进行排序

javascript - 在 SuiteScript 2.0 中从客户端脚本设置内联 HTML 字段

jdbc - Netsuite JDBC 查询错误

netsuite - 如何在用户事件脚本中获取发票 ID (tranid) 值?

javascript - Qt webkit编程,Qt数据类型对应Javascript数据类型是什么?

javascript - 如何阻止表的 td 在同一表的其他 tds 之间滚动

javascript - 如何在套件中使用 nlapiXMLToPDF

javascript - 如何在 Netsuite 'N/search Module' 中使用 for 循环获取第一组千条记录和下一组千条记录

netsuite - 如果 NetSuite 中的联系人记录的“公司”字段为空,如何获取公司中关联的联系人