function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
YMatsubaraYMatsubara 

Lightning:レコード固有アクションのコンポーネントの設定

LightningへClassicで使用していたjava scriptボタンを移行させるにあたり、レコード固有として呼び出されるコンポーネントを実装することを考えています。

まずはサンプルコンポーネントを実装してみたのですが、期待通りの動きにならず困っています。

コードは下記URLにあるサンプルコードに基づき、Component/Controller/Helper/Apexクラスを作成しました。
https://developer.salesforce.com/docs/atlas.ja-jp.lightning.meta/lightning/components_using_lex_s1_config_action_recordid.htm#components_using_lex_s1_config_action_recordid

コンポーネントでアクションを作成、取引先ページレイアウトに追加し、実行したところ、
Create New Contactの前に表示されるべき取引先名が表示されません。
User-added image

そのままフォームに入力をして 「Save Contact」をクリックすると反応がみられず、
ログを確認すると
System.QueryException: List has no rows for assignment to SObject
とありました。
うまく recordIDの受け渡しができていないのでしょうか。
サンプルコードに何か追加する必要があるのでしょうか。
ご教授いただけますと幸いです。
Taiki YoshikawaTaiki Yoshikawa
エラーメッセージ自体はクエリの検索結果が0件のときに発生するエラーのようです。
おそらくレコードIDうまく渡せていないかSOQLクエリで取得できるデータが0件の可能性があります。

まずはApexクラスを呼び出す処理の前にconsole.logをつかって値が存在しているかのチェックと、Apexクラス内でSystem.debug()処理をつかって値の存在チェックをするのが良さそうです。

リンク先を見たところサンプルコードは信頼できそうに思うのですが、Lightningコンポーネントは過去になんどかアップデートが行われているため、コードが古くなっている可能性もあるかもしれません。(おそらくこの可能性は低いと思うのですが)
YMatsubaraYMatsubara
ご返信ありがとうございます。ログ等を確認したところ、recordId = null となっていることが原因のようでした。

簡単な例でテストしましたところ、
<aura:component implements="flexipage:availableForRecordHome,force:hasRecordId"  >
レコードID:  {!v.recordId}	
</aura:component>
この場合は取引先詳細ページにコンポーネントを追加したところ、レコードIDが取得・表示されます。
User-added image
しかし、アクションで同様の実装を行うとレコードIDが取得されません。
<aura:component implements="force:lightningQuickAction,force:hasRecordId">  
レコードID:  {!v.recordId}
</aura:component>
User-added image

アクションにコンポーネントを追加する場合はレコードIDの取得ができないのでしょうか。
もしくは、何か別に実装すべきコードや必要な設定がありますでしょうか。

よろしくお願いいたします。
Taiki YoshikawaTaiki Yoshikawa
共有頂いたリンク先のサンプルコードを試してみました。コピーする形で手を加えずに実行してみたのですが、取引先名は問題なく表示できました。一部処理のコピーがうまくいっていないのかもしれません。

User-added image

もしくはアクションの設定でしょうか。私はこのように設定しています。
User-added image

一度コードのコピーをやり直してみるか別のDeveloperEdtionの組織などで試してみるのが良さそうです。