1

スイートレットのサブリストに、作成済みのカスタム保存済み検索のデータを入力しようとしています。私の問題は、サブリストが、私が行っている保存済み検索の「タイプ」に対応するフィールドからのデータのみを入力していることです。たとえば、この場合、保存された検索は「トランザクション」タイプの検索です。たとえば、「名前」や「請求先住所」など、保存された検索で顧客フィールドを参照したい場合、このデータはスイートレットのサブリストに入力されません。トランザクション レコード自体で参照されている他のすべてのフィールドは、サブリストに適切に入力されます。誰かが同じ問題に遭遇したことがあるかどうか疑問に思っていましたが、とにかくここに私が実装しようとしているコードがあります。

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

    }
4

1 に答える 1

2

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);
于 2015-11-16T21:23:29.807 に答える