2011-12-14 21 views
1

現在のユーザーが書き込みアクセス権を持っているアカウント(SOQLを使用)のみを返す方法はありますか?ユーザー権限に基づいてレコードを照会するにはどうすればよいですか?

たとえば、特定のアカウントにアクセスして[共有]ボタンをクリックすると、そのレコードにアクセスできるユーザー(およびグループ)の一覧が表示されます。これらのユーザーの1人としてログインすると、アカウントレコードを取得するために、(Visualforceページ上のカスタムコントローラを介して)SOQLステートメントを実行できます。ただし、そのレコードに書き込み(または編集)する権限がユーザーにある場合にのみ、Accountレコードが返されるようにしたいと思います。何か案は?前もって感謝します!

答えて

1

共有を実行する方法は、with sharingのキーワードを使用することです。どんな理由であれ、これをやりたくない場合は、DMLExceptionをキャッチしてtryブロックにDML文をラップすることができます。例外オブジェクトに対してgetDmlType()を呼び出して、障害が許可に関連していたかどうかを確認します。私は状態コードはSystem.StatusCode.INSUFFICIENT_ACCESS_OR_READONLYと思う。 status codesの完全なリストは次のとおりです。

+0

私は 'with sharing'キーワードを使用していますが、まだ書き込み可能ではないレコードを取得しています。 –

+0

これは書き込み可能ですが、読み込みはできません。ですから、DMLコールを作成して例外をキャッチし、それに応じて処理する必要があると思います。 –

+0

DMLコールの前に知る方法はありますか?必ずしもレコードを更新したいとは限りません。 –

関連する問題