2016-11-11 10 views
1

searchResultSet.columns.lengthを検索オブジェクトを作成中 - >未定義....このコードに欠けているものを**のSuiteScript 2.0 **エラークライアントスクリプトで


関数pageInit(のScriptContext){

try{ 
    var currentRecord = scriptContext.currentRecord; 
    var searchObj = search.load({ 
     id:'customsearchvc_bt_duplicate_vendor_list' 
    }); 

    var searchResultSet=searchObj.run(); 
    var noOfDupVendors = searchResultSet.length; 

    log.debug({details: "there are "+searchResultSet.columns.length+" duplicate vendors"}); 

    currentRecord.setText({ 
     fieldId: 'custrecordvc_merge_vendor_total_unique_v', 
     text: noOfDupVendors 
    }); 

    }catch(e){ 
     log.error("error at getinputdata stage","error detail is :"+e.message); 
    } 
+2

、本当に良い方法を達成するためにグラムあなたが共有したコードの実際には、要約検索から得られた結果を持つ動的なフィールドが実際にあります。 SuiteScriptは必要ありません。 Netsuiteのヘルプをチェックしてください: '概要検索結果から派生した値を持つカスタムフィールドを作成する' –

答えて

2

searchResultSetオブジェクトにはlength性はありません。このセットにはが実際にはありません結果が含まれています(私は知っています、それは奇妙です)あなたはそれらを合計するために結果を反復処理する必要があります。

var searchResults = searchResultSet.getResults({ 
    start: 0, 
    end: 1000 
}); 

var noOfDupVendors = searchResults.length 

無限結果のためのソリューションは、このようなものになります::(未テスト)を:あなたのケースでは、あなたはソリューション「それは常に1000未満になるだろう」ずさんで逃げることができるかもしれ

var searchResults; 
var noOfDupVendors = 0; 

do{ 
    searchResults = searchResultSet.getResults({ 
     start: noOfDupVendors, 
     end: noOfDupVendors+1000 
    }); 
    noOfDupVendors += searchResults.length 
}while(searchResults.length == 1000); 

別(もテストされていない)コンパクトな方法、あなたは4000のまたは少ない結果に数えることができる場合は、次のようになります。

私の答えにもかかわらず
var noOfDupVendors = 0; 

searchResultSet.each(function(result){noOfDupVendors++; return true;}) 
+0

ありがとう、ありがとう:) ..これは、はい、私はあなたのポイントを参照してください:) – FreeMarker12

関連する問題