1

商談へのマスター詳細を持つカスタム オブジェクトがあります。このカスタム オブジェクトを照会するときに、ユーザーが読み取りまたは読み取り/書き込みアクセス権を持っているかどうかを判断する方法はありますか?

私のニーズを明確にするために、読み取りアクセス権しか持たないレコードと編集可能なレコードを明確に区別してページ (visualforce 以外) をレンダリングする方法を探しています。

4

3 に答える 3

1

これには、質問への回答が含まれている可能性がありますhttp://salesforceblogger.blogspot.com/2012/04/query-user-access-level-in-apex.html

API 24.0 で公開されている UserRecordAccess テーブルがあり、共有オブジェクトで頭を叩く代わりにアクセスを簡単に確認できます。

于 2012-04-06T18:44:17.650 に答える
1

ユーザーは、商談に対して持っているのと同じアクセス権を持っています。オブジェクトはアクセス許可を公開していますが、Profileオブジェクトの CRUD 設定を確認できるようには見えません。

統合ピースを作成していますか、それとも Visualforce を使用していますか? Visualforce を使用している場合、インターフェイスはセキュリティ コントロールを自動的に尊重し、表示が許可されていないデータを非表示に<apex:inputField>し、フィールドへの書き込み権限がない場合は使用時にフィールドを読み取り専用にします。

**編集**誰かがより良い解決策を持っているかもしれませんが、照会したレコードを更新して、それぞれが成功したか失敗したかを保存し、それを使用してインターフェイスを制御するのはどうですか? ちょっとしたハックです。他に何か見つけたら、必ず更新します。

** 2012 年 1 月 25 日編集 ** これを見つけました: http://www.salesforce.com/us/developer/docs/api/index_Left.htm#StartTopic=Content/sforce_api_objects_userrecordaccess.htm?SearchType=Stem

それはあなたが必要とするものを正確に与えるでしょう!

于 2012-01-16T23:13:31.703 に答える
0

アクセスのレベルを調べるためにクエリを実行する方法はわかりませんが、apex クラスが With Sharing キーワードを使用している場合、オブジェクトの共有が尊重されるため、データを更新しようとすると DML 例外が発生します。あなたはキャッチすることができます。

With Sharing を使用していない場合、apex は共有モデルを尊重せず、技術的には、ユーザーはアクセス権がなくてもデータを更新できます。

あなたがvisualforceを使用している場合、LaceySnrが指摘したよう<apex:inputfield>に、読み取り専用アクセスしかない場合、要素はユーザーに自動的に読み取り専用で表示されます。

于 2012-01-17T16:59:32.463 に答える