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
愛美 加藤 16愛美 加藤 16 

詳細画面をコンソールのサブタブで開く方法(ライトニングコンポーネント、VF画面)

開発に関して初心者のため、ご容赦頂ければと思います。

現在、サービスクラウドのコンソール画面でマージ機能の開発をしています。個人取引先の一覧を表示させる部分で、あるレコードをクリックしたらその詳細画面がサブタブで開くようにしたいのですが、うまくいきません。

開発画面の主タブ内で個人取引先がサブタブで開いていくようにしたいのです。

開発はライトニングコンポーネントで行っています。まだLEX切り替えの目途が立っていないため、VFページにライトニングコンポーネントを表示させる方法で開発しています。取引先の明細要のコンポーネントに、詳細画面へ遷移するためのボタンを追加しており、押下したときの動作をコントローラで以下のように試しています。

 testOpenSubtab : function(component, event, helper) {
        try{            
            /*var subLink = '/' + component.get("v.act.Id");
            window.open('/console#%2F' + component.get("v.act.Id"));*/      
            var sf = sforce.console;
            alert('sforce.consoleを実行できました。※調査中');
            sf.getFocusedPrimaryTabId(function(tab){
                var primTabId = tab.id;
                alert('primTabId取得結果 : ' + primTabId);
                sf.getFocusedSubtabId(function(tab){
                    var subTabId = tab.id;
                    sf.openSubtab(primTabId,subLink,true);
                });
            });
        } catch(e){
             alert('エラーになりました。 ' + e);
        }
    },

try内のコメントアウトしている2行で、ブラウザのタブごとに表示は可能ですが、できればサブタブで開きたいです。
try内の3行目、 「var sf = sforce.console;」でエラー(「ReferenceError: sforce is not defined」)となってしまいます。
開発の知識が乏しくお恥ずかしいですが、もし回避可能な方法があればご教授頂ければと思います。

以上、よろしくお願い致します。
Best Answer chosen by 愛美 加藤 16
pikotaropikotaro
ライトニングコンポーネントの知識がないのですが、
ReferenceError: sforce is not defined とでているのであれば、
なにかしらの見落としなどによる原因に感じました。

具体的には、
var sf = sforce.console; にてエラーにならず、インスタンスを取得するには、

以下を参考にしましたが、

https://developer.salesforce.com/docs/atlas.ja-jp.api_console.meta/api_console/sforce_api_console_sample_vf.htm

以下のjsを、提示いただいたコードより前に読み込んである必要があるかと思われます。(後ではダメと思います)
<apex:includeScript value="/support/console/40.0/integration.js"/>

そんな単純なことは当然やっているでしたら、

integration.jsが2度読み込まれてたりしませんでしょうか。
sforceインスタンスを壊しているため、エラーがでている可能性があります。

参考になれば・・・
失礼しました〜

 

All Answers

pikotaropikotaro
ライトニングコンポーネントの知識がないのですが、
ReferenceError: sforce is not defined とでているのであれば、
なにかしらの見落としなどによる原因に感じました。

具体的には、
var sf = sforce.console; にてエラーにならず、インスタンスを取得するには、

以下を参考にしましたが、

https://developer.salesforce.com/docs/atlas.ja-jp.api_console.meta/api_console/sforce_api_console_sample_vf.htm

以下のjsを、提示いただいたコードより前に読み込んである必要があるかと思われます。(後ではダメと思います)
<apex:includeScript value="/support/console/40.0/integration.js"/>

そんな単純なことは当然やっているでしたら、

integration.jsが2度読み込まれてたりしませんでしょうか。
sforceインスタンスを壊しているため、エラーがでている可能性があります。

参考になれば・・・
失礼しました〜

 
This was selected as the best answer
愛美 加藤 16愛美 加藤 16
太郎ぴこ様

ご回答頂きありがとうございます。
ご教授頂きました通り、参照のコードをVFページに書き足しましたらエラー回避可能でした。

エラー回避後さらに調査が進み、タブを開く方法についても、
サブタブではなく別の主タブで開くようにしましたら無事できました。

 ×: 主タブ⇒開発画面、サブタブ⇒得意先の詳細画面
 ○: 主タブ⇒開発画面、別の主タブ⇒得意先の詳細画面

お手数をお掛け致しました。
ご回答頂きありがとうございました。