Quick Action Hack


[Lightningレイアウトの秘訣：クイックアクションハック](https://theaccidentaladmins.com/quick-action-hack)

これも関係するのかな。
[Field Dependencies prevent quick action predefined values from being used:フィールドの依存関係により、クイックアクションの事前定義された値が使用されなくなります](https://trailblazer.salesforce.com/issues_view?id=a1p3A000000ezZ8QAI)


# Lightningレイアウトの秘訣：クイックアクションハック

クイックアクションは、ユーザーがボタンをクリックするだけでレコードをすばやく作成し、現在のレコードから値を事前入力できるようにする強力なツールです。ただし、場合によっては、作成するオブジェクトが[ターゲットオブジェクト]メニューに表示されません。

この例では、「Component」オブジェクトから新しい「Dependency」レコードを作成したいのですが、クイックアクションを作成する場合、これらが唯一のオプションです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/5bd36e80-c7ef-e8e0-9142-843a21202aff.png)


この動作の理由は、関係タイプに関係しています。

コンポーネントはオブジェクトAとのマスター詳細関係の詳細であり、依存関係はオブジェクトAとのマスター詳細関係の詳細でもあります。このヘルプ記事でSalesforceが指摘しているように：

マスターと詳細の関係で詳細オブジェクトにアクションを作成する場合、アクションのターゲットオブジェクトを同じマスターの別の詳細オブジェクトにすることはできません。

たとえば、マスターオブジェクトAにはBとCの2つの詳細オブジェクトがあります。ターゲットオブジェクトとしてBまたはCを使用して、オブジェクトAにアクションを作成できます。ただし、オブジェクトBでアクションを作成する場合、BとCは同じマスターを持っているため、ターゲットオブジェクトをオブジェクトCにすることはできません。これを回避して、Cをターゲットオブジェクトとして使用してBにアクションを作成するには、2つの方法があります。

残念。しかし、それで私たちを止めるつもりはありません–クイックアクションハックに参加してください！

# クイックアクションハックを作成するには、カスタムフィールド、レコードの更新クイックアクション、およびプロセスビルダーを組み合わせて、レコードの作成クイックアクションをシミュレートします。

最も単純な形式では、「依存関係（ターゲットオブジェクト）レコードの作成」と呼ばれるコンポーネントオブジェクト（ソースオブジェクト）の単一のチェックボックスカスタムフィールドのみが必要ですが、ソースオブジェクトページレイアウトには追加しません。

ソースオブジェクトに[レコードの更新]クイックアクションを作成し、チェックボックスをページレイアウトに追加するだけで、そのチェックボックスをtrueとして事前定義します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/48b4ff8c-9dd8-3c48-cc23-960b4274873a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/b09c61da-b540-3bac-b45f-e936b6378d59.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/b40e5c95-15c6-5bfe-c676-9d8dacb96607.png)


次に、Process Builderを使用して新しいプロセスを作成します。チェックボックスがtrueの場合、ターゲットオブジェクトレコード（私の場合はDependency）を作成し、必要なすべての値をソースオブジェクト（コンポーネント）からターゲットオブジェクト（Dependency）に渡します。プロセスにレコード更新ステップを追加して、チェックボックスをFalseに戻し、クイックアクションを再度使用できるようにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/86e60634-9da4-8013-578a-a6ca06e2d153.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/e04043b4-9d72-02ba-fae1-0d0cfd5ae7af.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/5822f497-ce9a-7d96-53d3-350aa737a452.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/5d645f77-4d05-76e4-0c79-ef4fee963df8.png)



これで、レコードの更新クイックアクションをページレイアウトに追加するだけで、ユーザーはボタンをクリックしてターゲットレコードを作成できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/4a2060c6-c535-b1a4-5d49-f119edcf212a.png)


# オプションと考慮事項：

クイックアクションでユーザーにさらに多くのフィールドを表示させたい場合は、ソースオブジェクトにそれらのフィールドを作成し、ページレイアウトに追加しないでください。代わりに、これらすべてのフィールドを[レコードの更新]クイックアクションレイアウトに追加します。ユーザーは、偽の[ターゲットオブジェクトの作成]ボタンをクリックしたときにそれらのフィールドにデータを入力し、ProcessBuilderでこれらすべてのフィールドをマップできます。

エンドユーザーは、標準の「レコードの作成」クイックアクションとまったく同じエクスペリエンスを利用でき、システムを打ち負かすためにスーパー管理者の権限を使用していることを認識できません。

考慮事項と制限事項に関しては、レポートや物事に表示され、ユーザーを混乱させる可能性があるため、明らかに大量のカスタムフィールドを追加することは実用的な解決策ではない可能性があります。可能であれば、これをチェックボックスまたは少数のカスタムフィールドのみに制限します。