特定の顧客レコードに関連付けられているすべてのユーザー ノートを表示するために作業中のアプリを取得しようとしています (適切な 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 のリストを取得できる必要があります。
関連するメモをすべて取得するための回避策はありますか? 検索を構成する別の方法はありますか? 独自のカスタム検索結合を定義する秘密の方法はありますか?
この動作に関するドキュメントを見つけることさえできません (作成者以外からのメモ検索をブロックします)。おそらく誰かが管理者レベルでそれをオーバーライドする方法を知っていますか?
これが不可能であることを認める準備はまだできていません。
注: ユーザー メモは、顧客レコードのフィールドではなく、顧客レコードに関連付けられたメモ タイプのレコードであるため、顧客から直接アクセスすることはできません。メモまたはユーザーメモの検索フィルターまたは検索結合もありません。