2017-12-08 24 views
0

netsuiteとsuitscript 2.0でトランザクションの保存済み検索を作成しました。アプリケーションに保存された検索データを表示しています。アプリケーションユーザは、任意のフィールドにフィルタを適用できます(please see the attached screenshot)。たとえば、ユーザが投稿期間に「Aug 2011」を選択すると、2011年8月の取引のみがロードされます。これは、 "2011年8月"のinternalidでフィルタを作成するとうまく動作しますが、UIでは内部IDがありません。SuiteScript 2.0トランザクション保存済み検索フィルタ

サンプルコード:

/* 
here is my required module 
*/ 

function getTransactionData(datain) 
{ 
    try 
    { 

     var objSearch = search.load 
        ({ 
         id: datain.savedsearchid 
        }); 
      /***** Work *****/ 
      objSearch.filters.push(search.createFilter({ name: "postingperiod", operator: "ANYOF", values: "1" })); //here 1 is internalid of periodname "Aug 2011" 

      /***** Not Work (SSS_INVALID_SRCH_FILTER_JOIN) *****/ 
      //objSearch.filters.push(search.createFilter({ name: "postingperiod", join: "accountingperiod", operator: "ANYOF", values: "Aug 2011" })); 

      objSearch.run(); 
    } 
    catch(ex) 
    { 
     log.error("getTransactionData", ex); 
     throw ex; 
    } 
} 

私は参加してみましたが、Netsuiteのから "SSS_INVALID_SRCH_FILTER_JOIN" エラーが表示。

これについてお手伝いできますか?

ありがとうございます事前にありがとう

答えて

0

私はあなたのアプリケーションがスイートレットだと思いますか?その場合は、レコードの選択フィールドタイプを実行する必要があります。だから、おそらく '投稿期間'。これにより、期間がドロップダウンで表示されます。

ユーザーがそれを選択すると、クライアントサイドスクリプトでデータを自動更新し、保存した検索を読み込ませるようにします。

また、すべてのデータをロードし、フィルタリングクライアント側のDOMフィルタリングを実行することもできます。本当にあなたの "アプリケーション"に関するもう少し情報が必要です。

+0

私のアプリケーションは.net wpfアプリケーションで、スイートレットではありません。 – user2626026

+0

フィルタを変更しようとしましたか?objSearch.filters.push(search.createFilter({name: "postingperiod"、join: "accountingperiod"、演算子: "ANYOF"、値: "1"}))); –

+0

ここで "1"はperiodname "8 2011"のinternalidで、internalidは私のwpfアプリケーションでは知りません。なぜinternalidに基づいていないperiodnameに基づいてトランザクションをフィルタリングしたいのですか? – user2626026

2

コードを編集してより理解しやすくしました。 それがどのように機能するかの要点がわかったら、あなたは好みの方法を編集/カスタマイズすることができます。

'postingperiod'にjoin 'accountingperiod'オプションがあると仮定します。これは、suitscriptを使用せずにnetsuiteで作成した保存済み検索で完全に機能します。

/* 
here is my required module 
*/ 

function getTransactionData(datain) { 
    try { 

     var objSearch = search.load({ 
      id: datain.savedsearchid 
     }); 
     var defaultFilters = objSearch.filters; 
     var customFilters = []; 

     //Adding filter 
     customFilters = ['postingperiod', 'ANYOF', '1']; 
     defaultFilters.push(customFilters); 
     customFilters = undefined; 
     customFilters = []; 



     //Adding filter 
     /* 
     customFilters = ['postingperiod.accountingperiod', 'ANYOF', 'Aug 2011']; 
     defaultFilters.push(customFilters); 
     */ 

     objSearch.filters = defaultFilters; 

     var objSearch_run = objSearch.run().getRange({ 
      start: 0, 
      end: 10 
     }); 

    } catch (ex) { 
     log.error("getTransactionData", ex); 
     throw ex; 
    } 
} 

あなたはネットスイートで作成し保存した検索に保存されているかのフィルタを知りたい場合は、スクリプトデバッガを使用することができます。 次のコードはsuitscriptです。

//Load Saved Search 
get(); 

function get() { 
    var search = nlapiLoadSearch('transaction', ' ENTER SAVED SEARCH ID HERE '); 
    log.debug('search',search); 
    var searchFilters = search.getFilterExpression(); 
    log.debug('searchFilters',searchFilters); 

    return search; 
} 
+0

ありがとう@Manu、ここで "1"はperiodname "8月2011"のinternalidとinternalid私は私のwpfアプリケーションで知っていない、 internalidに基づいていないperiodnameに基づいています – user2626026

関連する問題