Sharing Rule

[まとめページに戻る](https://qiita.com/Keiji_otsubo/items/60afc2a8d211b6f7d89f)
[まとめN～Z](https://qiita.com/Keiji_otsubo/items/92f92bb9f668ca9688be)



+ [Sharing Rule Report](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007IeVUd)

+ [条件に基づく共有ルールで使用されているため、レコード タイプを非アクティブ化できません。](https://qiita.com/Keiji_otsubo/items/de328c6f807a4b46d4f7)

# プロファイルだけでは制御できません

+ [プロファイル権限設定で挙動確認](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000MXSdv)

:::note
レコードタイプだけでは表示するページレイアウトや選択リストの値を制御することしかできないと思います。共有設定が必要だと思います。 

弊社では取引先オブジェクトでは得意先、仕入先、登録中の得意先、登録中の仕入先とレコードタイプを別けて運用しています。このうち登録中のものは経理担当者だけが表示されるように共有設定を設定しています。 

この登録中のレコードタイプだけは経理担当者のグループに所属する人だけに開示しています。 

同じような設定をすれば、必要な人だけに見せることができると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/1951cb86-6a3a-4aaf-876e-69d3cc6e04c8.png)
::: 


# Apex共有

+ [1 つのレコード タイプのパブリック グループ共有ルール](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007Lo6Jo)

パブリック グループのメンバー間で特定のレコード タイプへのアクセスを共有する必要があります。これまでは、レコード タイプと所有者 ID を基準とした基準ベースの共有ルールを使用して実行してきました。グループのメンバーシップが変更されるたびに、忘れずにユーザー ID を共有ルールに追加または削除する必要があるため、これは理想的とは言えません。パブリック グループのメンバー間で特定のレコード タイプを共有するより良い方法はありますか?

:::note
Apex 共有は、このようなユースケースを対象として、いくつかの素晴らしいことを実現します: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_bulk_sharing_creating_with_apex.htm
:::

+ [「1.カスタムオブジェクトの管理設定から、[Apex 共有の理由] 関連リストの [新規] をクリックします。」にたどり着けず、設定方法がわからないでおります。](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007RK6LV)

:::note
Classic に切り替えてみてください

Classic で、対象のオブジェクトの設定を表示します。下の方に「Apex 共有の理由」という関連リストがあります。ここで、自分の好きなApexだけでつかえる「共有の理由」を作成できます。

https://qiita.com/sho7650/items/08367ee3ba49078e7567
:::

+ [I am having trouble changing the OWD sharing setting from Controlled by Parent to Private for Interviewer.](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007erxhi)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/eaa9b8a7-5d15-139b-aa35-787f644b3983.png)

:::note
Isn't the Interviewer object and parent object in a Master-Detail Relationship 
I don't think it can be changed unless it is a Lookup Relationship.
:::

+ [レコードトリガフローのShareオブジェクト（共有オブジェクト）について](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000J6TQy)

:::note
[Apex を使用してレコードを共有する](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_bulk_sharing_creating_with_apex.htm) という方法はフローでも実行できると回答されていますね。


https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000A89LsSAJ

参照先IdはParentIDのことだと思うのですが、ここには共有の設定を行いたいレコードのIdをセットすると思います。Aのレコードの参照権限を付与となるので、オブジェクトＢでなはく、ＡのレコードのIdをセットすれば共有できると思います。
:::

# 実際の設定例

+ [Salesforce で設定を構成して、コードを記述せずに所有者以外のユーザーに特定のレコードを削除する権限を付与するにはどうすればよいですか?](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000KB6VD)

:::note
ユーザーは役割階層内で異なる役割を担っているため、ルール主導の読み取り/書き込み権限を共有しても役に立ちません。

したがって、「すべて変更」の代替アプローチは、チェックボックス アプローチ + フロー アプローチです。

それはうまくいくはずです。削除対象としてマークされたレコードをすぐに削除するフローを実行できます。ただし、フローがユーザーコンテキストではなくシステムコンテキストで実行されていることを確認してください。
:::

# その他

+ [１つのOrg内に2つのWSがあり、両方ともorgに所属するユーザ同士でチャンネル共有が欲しいというニーズが発生しました。  2つのWSはそれぞれ機密情報があり、WS内のパブリックチャンネルを相手に見られないことが必要です。  （AND条件）  ・WS-1のユーザにWS-2のパブリックチャンネルを見せたくない  ・WS-2のユーザにWS-1のパブリックチャンネルを見せたくない    私は2人のユーザ用に第3のWSを用意してconnectするアイデアを持っていますが、これ以外に良い方法があったら教えてください。     ](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000KDPMu)