You need to sign in to do that
Don't have an account?

組織の共有設定の情報取得方法
お世話になります。
Visutalforceページを活用して詳細画面を作成し、
組織の共有設定に応じて「共有」ボタンを表示/非表示したいと考えております。
標準コントローラでは共有ボタンの機能は提供されていないようなので
自前でボタンだけは作成しました。
が、当たり前ですが、共有設定に応じてボタンの表示/非表示はされません。
グローバル変数等を探してはみたのですが、見つけられていません。
共有設定情報が取得できる手段等ありましたら
ご教授下さい。
宜しくお願い致します。
あるレコードがあるユーザーに対してどのようなアクセス権があるのかどうかは、
Shareオブジェクトと呼ばれる内部オブジェクトのレコードで判断します。
たとえば、Accountオブジェクトに対してはAccountShareオブジェクトがあり、
CustomObject__cオブジェクトに対してはCustomObject__Shareオブジェクトがあります。
(このオブジェクトが「公開」でない場合に自動的に作成されています)
これらのShareオブジェクトは、対象となるレコードのID、共有者(またはグループ)のID、
アクセス権、共有の理由などを項目値として持っているので、
このShareオブジェクトを検索することにより、どのユーザーがどのレコードに対して
どのようなアクセス権を持っているかを調べることができます。
また、Apexコード中でShareオブジェクトを作成してinsertすることにより
共有設定を増やすこともできます。
Shareオブジェクトの詳細はWeb Services APIのリファレンスが、
http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_objects_list.htm
Apexコード中での共有に関する情報はApex Codeのリファレンスが参考になるかと思います。
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_bulk_sharing.htm
All Answers
あるレコードがあるユーザーに対してどのようなアクセス権があるのかどうかは、
Shareオブジェクトと呼ばれる内部オブジェクトのレコードで判断します。
たとえば、Accountオブジェクトに対してはAccountShareオブジェクトがあり、
CustomObject__cオブジェクトに対してはCustomObject__Shareオブジェクトがあります。
(このオブジェクトが「公開」でない場合に自動的に作成されています)
これらのShareオブジェクトは、対象となるレコードのID、共有者(またはグループ)のID、
アクセス権、共有の理由などを項目値として持っているので、
このShareオブジェクトを検索することにより、どのユーザーがどのレコードに対して
どのようなアクセス権を持っているかを調べることができます。
また、Apexコード中でShareオブジェクトを作成してinsertすることにより
共有設定を増やすこともできます。
Shareオブジェクトの詳細はWeb Services APIのリファレンスが、
http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_objects_list.htm
Apexコード中での共有に関する情報はApex Codeのリファレンスが参考になるかと思います。
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_bulk_sharing.htm
>tajimaさん
ご回答ありがとう御座います。
> あるレコードがあるユーザーに対してどのようなアクセス権があるのかどうかは、
> Shareオブジェクトと呼ばれる内部オブジェクトのレコードで判断します。
>
> (このオブジェクトが「公開」でない場合に自動的に作成されています)
なるほど、オブジェクトの存在有無で判断すれば、ボタンの表示/非表示を切り替えられますね。
試しにやってみます。ありがとう御座いました。
また、宜しくお願い致します。