0

@bknights と @prasun からの提案を組み合わせて、次のようにコードを再入力します。

function main_GetVendorItems(request, response) {
    response.write(JSON.stringify(getVendorItems(request)));
}

function getVendorItems(request) {

    var vendorid = request.getParameter('vendor');

    nlapiLogExecution('DEBUG', 'searchRes', 'Searching For Vendor ID: '+vendorid );

    var filters = new Array();
    var columns = new Array();
    filters[0] = new nlobjSearchFilter('vendorcost', null, 'greaterthan', 0);
    filters[1] = new nlobjSearchFilter('othervendor', null, 'is', [vendorid] );
    columns[0] = new nlobjSearchColumn('itemid');
    columns[1] = new nlobjSearchColumn('entityid', 'vendor');
    columns[2] = new nlobjSearchColumn('vendorcost');
    columns[3] = new nlobjSearchColumn('vendorcode');
    columns[4] = new nlobjSearchColumn('vendorpricecurrency');

    var searchresults = nlapiSearchRecord('item', null, filters, columns );

    //for test test each element of the array
    (searchresults || []).forEach(function(res){
        nlapiLogExecution('DEBUG', 'searchRes', res instanceof nlobjSearchResult);
    })

    return searchresults;
}

呼び出し関数は次のとおりです。

function test () {
    var vendorID = nlapiGetFieldValue('custrecordvpr_supplier'); alert('searching for vendor ID: '+vendorID );
    var url = nlapiResolveURL('SUITELET', 'customscriptls_getvendoritems', 'customdeployls_getvendoritems', true);
    var params = {}
    params['vendor'] = vendorID;
    var response = nlapiRequestURL(url, params);
    var VendorItemsSublist = response.getBody();

    nlapiSetFieldValue('custrecordvpr_comment',VendorItemsSublist );        
}

返されたオブジェクトを示すカスタム レコード/フォームにコメント フィールドがあります。上記のコードで本当に奇妙なのは、検索対象のベンダー ID を投稿する最初のエントリでさえ、実行ログに情報が追加されていないことです。

スクリプトと展開の記録を確認しましたが、そこには何も問題がありません...非常に単純なものが欠けているに違いありません。

ちなみに、コードはカスタムフォームの「テスト」ボタンによって呼び出されています。

4

3 に答える 3

0

クエリを実行しようとしている場合はitem vendor、単に試してください

filters[1] = new nlobjSearchFilter('vendor', null,'anyof', vendorid );
于 2015-12-28T10:25:43.633 に答える