You need to sign in to do that
Don't have an account?
YMatsubara
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の前に表示されるべき取引先名が表示されません。
そのままフォームに入力をして 「Save Contact」をクリックすると反応がみられず、
ログを確認すると
System.QueryException: List has no rows for assignment to SObject
とありました。
うまく recordIDの受け渡しができていないのでしょうか。
サンプルコードに何か追加する必要があるのでしょうか。
ご教授いただけますと幸いです。
まずはサンプルコンポーネントを実装してみたのですが、期待通りの動きにならず困っています。
コードは下記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の前に表示されるべき取引先名が表示されません。
そのままフォームに入力をして 「Save Contact」をクリックすると反応がみられず、
ログを確認すると
System.QueryException: List has no rows for assignment to SObject
とありました。
うまく recordIDの受け渡しができていないのでしょうか。
サンプルコードに何か追加する必要があるのでしょうか。
ご教授いただけますと幸いです。
おそらくレコードIDうまく渡せていないかSOQLクエリで取得できるデータが0件の可能性があります。
まずはApexクラスを呼び出す処理の前にconsole.logをつかって値が存在しているかのチェックと、Apexクラス内でSystem.debug()処理をつかって値の存在チェックをするのが良さそうです。
リンク先を見たところサンプルコードは信頼できそうに思うのですが、Lightningコンポーネントは過去になんどかアップデートが行われているため、コードが古くなっている可能性もあるかもしれません。(おそらくこの可能性は低いと思うのですが)
簡単な例でテストしましたところ、 この場合は取引先詳細ページにコンポーネントを追加したところ、レコードIDが取得・表示されます。
しかし、アクションで同様の実装を行うとレコードIDが取得されません。
アクションにコンポーネントを追加する場合はレコードIDの取得ができないのでしょうか。
もしくは、何か別に実装すべきコードや必要な設定がありますでしょうか。
よろしくお願いいたします。
もしくはアクションの設定でしょうか。私はこのように設定しています。
一度コードのコピーをやり直してみるか別のDeveloperEdtionの組織などで試してみるのが良さそうです。