2

特定の顧客レコードに関連付けられているすべてのユーザー ノートを表示するために作業中のアプリを取得しようとしています (適切な Netsuite の UI 顧客レコード ページに表示されるように)。

そのために、Netsuite RESTlet をセットアップして、Customer 内部 ID を指定すると、関連する Note レコードの内部 ID のリストを返します。

RESTlet スクリプトで簡単な検索をセットアップしました。

function get_notes(params) {
  log("GET params", JSON.stringify(params));

  var filters = [
    new nlobjSearchFilter('internalid', 'customer', 'is', params.id)
  ];

  var columns = [
    new nlobjSearchColumn('internalid'),
    new nlobjSearchColumn('note'),
  ];

  var search = nlapiCreateSearch('note', filters, columns);
  var notes = search.runSearch().getResults(0, 3);
  return notes;
}

function log(msg, details) {
  nlapiLogExecution('DEBUG', msg, details);
}

スクリプトは期待どおりに機能しますが、問題は、この検索で​​は、authorフィールド (ユーザーの内部 ID) が検索を実行しているユーザーの内部 ID と一致する Notes のみが返されることです。つまり、自分が作成者であるノートのみを検索できます。

これは、計り知れないセキュリティ上の理由から、Netsuite の「機能」であるとの連絡を受けました。

リクエストを行っているユーザーが作成者であるノート ID だけでなく、関連するすべてのノート ID のリストを取得できる必要があります。

関連するメモをすべて取得するための回避策はありますか? 検索を構成する別の方法はありますか? 独自のカスタム検索結合を定義する秘密の方法はありますか?

この動作に関するドキュメントを見つけることさえできません (作成者以外からのメモ検索をブロックします)。おそらく誰かが管理者レベルでそれをオーバーライドする方法を知っていますか?

これが不可能であることを認める準備はまだできていません。

注: ユーザー メモは、顧客レコードのフィールドではなく、顧客レコードに関連付けられたメモ タイプのレコードであるため、顧客から直接アクセスすることはできません。メモまたはユーザーメモの検索フィルターまたは検索結合もありません。

4

2 に答える 2

1

基本的に、RESTLETS は常にそれを呼び出したユーザーとして実行されます。これに Suitelet を使用できる場合は、それを管理者として実行するように設定し、検索を作成できる任意のメモを返すことができます。

本当に Restlet が必要ですか? つまり、これを外部アプリケーションから呼び出していますか、それとも NS GUI に機能を追加しようとしていますか? 後者の場合は、Suitelet を簡単に使用できます。

于 2015-12-17T00:47:48.390 に答える
1

RESTlet を使用すると、管理者/フル アクセスなどのロールの資格情報/トークンを使用して RESTlet を呼び出さない限り、他のユーザーのメモを取得できません。RESTlets は常に現在のユーザーのコンテキストで実行されます。

あなたが本当にこれを達成しなければならない場合、それを行うための1つの代替手段:

1) システム ノートの機能をシミュレートするカスタム レコードを作成するユーザー イベント スクリプトを顧客で作成します。

2) RESTlet ユーザー ロールがカスタム レコードに対するフル レベルのアクセス権を持っていることを確認し、顧客をカスタム レコードの親にします。

3) RESTlet でカスタム レコードを返します。

于 2015-12-17T16:56:51.837 に答える