• pikotaro
  • NEWBIE
  • 0 Points
  • Member since 2017

  • Chatter
    Feed
  • 1
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 17
    Questions
  • 30
    Replies
開発に関して初心者のため、ご容赦頂ければと思います。

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

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

開発はライトニングコンポーネントで行っています。まだ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」)となってしまいます。
開発の知識が乏しくお恥ずかしいですが、もし回避可能な方法があればご教授頂ければと思います。

以上、よろしくお願い致します。
User-added image
 
<apex:chart data="{!param.barData}"
                                width="100%"
                                height="300px"
                                theme="Green"
                                colorSet="#156F9E,#FF9123,#6BAE4A,#424242,#A4A4A4">
                        <apex:barSeries orientation="horizontal"
                                        axis="left"
                                        stacked="false"
                                        xField="value1,value2"
                                        yField="name"
                                        title="A,B">
                            <apex:chartLabel field="value1" display="outside" color="#999" font="11px bold" orientation="horizontal"/>
                            <apex:chartLabel field="value2" display="outside" color="#999" font="11px bold" orientation="horizontal"/>
                        </apex:barSeries>

                        <apex:axis position="bottom"
                                   type="Numeric"
                                   fields="value1,value2">
                            <apex:chartLabel/>
                        </apex:axis>

                        <apex:axis position="left"
                                   type="Category"
                                   grid="true"
                                   fields="name">
                            <apex:chartLabel/>
                        </apex:axis>

                        <apex:legend position="top"/>
                    </apex:chart>

How can value2 be plotted on the graph?
apex:chart円グラフで、円グラフの中に、凡例が表示されますが、割合具体的にいくつかわからないので、
数字を表示したいです。

以下のコードで、凡例の中に値を含めてしまえばできますが、改行されませんし、なにかオプションで表示できるのであれば、そちらで実装したいと考えています。
以下のリンクでオプションをみてみたのですが、それっぽいのがパット見わからないのですが、実現する方法ありますでしょうか。
https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_chartLabel.htm

 
<apex:page id="Monitoring"
           controller="GraphController"
           showHeader="false"
           sideBar="false"
           docType="html-5.0"
           standardStylesheets="true"
           applyHtmlTag="false"
           readOnly="true">
    <html lang="ja">
    <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>

        <title>test</title>
    </head>
    <body>
    <apex:chart height="400px" width="400px" data="{!pieData}">
        <apex:pieSeries dataField="data" labelField="name" donut="50"/>
        <apex:legend position="right"/>
    </apex:chart>
    </body>
    </html>
</apex:page>



public with sharing class GraphController {

    public List<PieWedgeData> getPieData() {
        List<PieWedgeData> data = new List<PieWedgeData>();
        data.add(new PieWedgeData('Jan 50', 30));
        data.add(new PieWedgeData('Feb 15', 15));
        data.add(new PieWedgeData('Mar 10', 10));
        data.add(new PieWedgeData('Apr 20', 20));
        data.add(new PieWedgeData('May 20', 20));
        data.add(new PieWedgeData('Jun 5', 5));
        return data;
    }

    // Wrapper class
    public class PieWedgeData {

        public String name { get; set; }
        public Integer data { get; set; }

        public PieWedgeData(String name, Integer data) {
            this.name = name;
            this.data = data;
        }
    }
}

 
パッケージでインストールされたオブジェクトに対してトリガーを入れました。
すでに、そのパッケージでトリガーが仕込まれているようなのですが、
さらに、トリガーを作った場合、パッケージのトリガーが動いたあと、
自分のトリガが動く形になるでよいでしょうか。

実際に動かしたところ、after update にsystem.debugをいれてみたところ、
ログに2回出力されていたので、もしかしたら、パッケージからの更新が終わった後に1回
自分の更新が終わった後に1回なのかなと思いました。

ご教授頂ければ幸いです。
 
いつもお世話になっております。

バッチからユーザを無効化しようとしているのですが、
以下エラーが発生しました。

caused by: System.DmlException: Update failed. First exception on row 0 with id 005N0000004GTPiIAO; first error: FIELD_INTEGRITY_EXCEPTION, このゲストユーザは、有効なコミュニティのゲストユーザであるため、無効化できません。: 有効: [IsActive]

当該バッチで、コミュニティユーザ以外でしたら、無効化できたのですが、
コミュニティのゲストユーザでは当該エラーにつき、無効化できませんでした。

不明なのは、当該、コミュニティゲストユーザを無効化すると、既存のコミュニティでゲスト参加するような機能がなくなるだけで、コミュニティライセンスをもつユーザそのままコミュニティを使えるという認識で大丈夫でしょうか。



 
トリガ内で「System.LimitException: Too many query rows: 50001」が発生してしまう場合があります。

ぐぐってみますと、回避策として、VFでreadonly属性つけたりremote actionで@readアノテーションをつけるなどがあることがわかりましたが、トリガーですので、ちょっとできません。(あ、remote actionを別クラスにすればできますね!!)

ちなみに、以下SOQLを実行した際に発生するのですが、
以下SOQL結果は、数百件程度で、さらに、GroupByを外しても3000件弱となりますので、なにが原因なのでしょうか。

トリガからさらにトリガをよびだしてはいなさそうなので、1トランザクションで累計で50001を超えるといったこともなさそうです。
これ以上where条件追加してもあまり効果なさそうですが、つけたしたほうがいいのでしょうか。。
SELECT User__c, SUM(price__c) p FROM Cart__c WHERE Product__c IN (SELECT Id From master__c WHERE RecordTypeId = :RecordType And ProductType__c = 1) AND MonthYear__c >= :DateFrom AND MonthYear__c <= :DateTo GROUP BY User__c
 
VFページで、<apex:commandButton>でできた保存ボタンをクリックした後、
<apex:pageMessage>に以下が出力されてしまい保存ができません。

「<apex:inputText> 要素の値は、文字列型として解決する必要があります。」

おそらく、あるケースで、ページの一部の項目が、<apex:inputText disabled="true">となるケースがあり、
その時に発生していそうなので(disabled指定が無い場合は保存できます)
保存ボタンクリック時に、disabledを解除するjsをいれましたが、変わらず同じエラーになりました。

原因がわからず困っていますが、なにが原因と考えられますでしょうか。
ユーザオブジェクト(親)
└購入履歴オブジェクト(子(ユーザオブジェクトと1対多の関係)
└アンケートオブジェクト(子(物理的には1:多ですが、論理的にはユーザオブジェクトと1:1の関係))

上記のような構成の際、

購入履歴オブジェクトから、アンケートオブジェクトへはsoqlで辿れないかと思います。

この場合、以下のような感じで2本のSOQL実行してマージすることを考えましたが、
懸念事項ありますでしょうか。
また、より良い解決方法ありますでしょうか。

1.購入履歴とユーザオブジェクトを取得
2.アンケートとユーザオブジェクトを取得
3.for loop中でユーザIDで、購入履歴とアンケートオブジェクトをマージ
 
I know I can define a favicon for a Site, but can i define for a commnity site?
コミュニティにログインしていて、離席して30分後にかえってきたら
セッションタイムアウトになってエラーになることありますが、
セッションタイムアウトを検出する方法はどんな感じでできるでしょうか。

たとえば、jsでsetTimeoutで再帰的に30分間隔でセッションが無効かどうかリクエストを取得するなどが
定石になるのでしょうか。
画面からApexクラスの削除ボタンを押すと、

「このApex クラスは、Salesforce の他の場所で参照されています。それを削除してから、もう一度やり直してください。Apex ジョブ」

と表示され、Apexジョブがリンクになっているので、リンクをクリックすると、

「この URL は、現在存在しません。
アクセスを試みた URL は、salesforce.com にはもう存在しません。」

となってしまいます。
soqlのorder byでバグがありました。

項目履歴管理テーブルで

select Field, NewValue from a__history ORDER BY CreatedDate, Field

としたら、以下のように出ました。

CreatedDate, Field
----------------------------------------------------------------
2017-03-31T02:35:41.000, d_datetime__c
2017-03-31T02:35:41.000, d_contact_id__c
2017-03-31T02:35:41.000, d_contact_id__c

CreateDateは同じで、次にFieldで並び替えになりますが、
Fieldはascなので、a→zで並び替えられるはずなのに、d→cのように並びかわってしまいます。

一方、Field descとすると、a->zの順に並び変わりました。
普通、descは降順なんで、z->aになるかと思います。

select Field, NewValue from a__history ORDER BY CreatedDate, Field desc

CreatedDate, Field
----------------------------------------------------------------
2017-03-31T02:35:41.000, d_contact_id__c
2017-03-31T02:35:41.000, d_contact_id__c
2017-03-31T02:35:41.000, d_datetime__c

バグかと思うので、sfに連絡をしようかと思いますが、
どこに問い合わせたらよいんでしょか
VFで、soqlで、子から親にある数式項目を取得した際、
開発コンソールでみると、値があって、ページ上も表示されているのですが、
VFで表示しようとすると、数式項目のみ空になってしまいます。

なにが原因と考えられますでしょうか。
 
お世話になります!

コミュニティで

 https://aaa.cs6.force.com/bbb

のようなURLのサイトをつくったとき、

以下のURLへアクセスすると、

https://aaa.cs6.force.com/

SFエラーページが表示されてしまいます。

Siteの設定で、エラーページの編集して有効になるのは、/bbb以下のページになる為と思いますが、

/ でもエラーページをカスタムするにはどのようにしたらよいでしょうか。




 
コミュニティをしていて、画面最上部のグローバルヘッダからコミュニティへのリンクが表示されて遷移できていましたが
最近になってできなくなってしまいました。

考えられる原因はなんでしょうか。
$Site.AdminEmailAddress の結果が空になりますが、どこに設定したらよいのでしょうか。

以下、マニュアルをみると「現在のサイトのサイトContactフィールドの値を返します。」
https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_variables_global_site.htm

とありますが、どこをさしているのかがわかりません。。
カスタムオブジェクトを削除したとき、
それを使用していたレポートを開こうとするとエラーになるかと思います。

カスタムオブジェクトを削除する前に、
そのカスタムオブジェクトを使用しているレポートを特定するレポートをつくることはできるのでしょうか。

 
コミュニティもしくはカスタマーポータルの設定で、
ヘッダ・フッタをHTMLで差し込めますが、
差し込むHTMLの画像などのリソースをSF外部に置かなければならないでしょうか。

例えば以下のようにmydomain.co.jp(SF外部)から画像を拾いにいっていますが
 
<div id="header">
<h1><img src="https://mydomain.co.jp/icon.png"  /></h1>
</div>
SFのドキュメントなどを参照する方法はありませんでしょうか。

 
apex:chart円グラフで、円グラフの中に、凡例が表示されますが、割合具体的にいくつかわからないので、
数字を表示したいです。

以下のコードで、凡例の中に値を含めてしまえばできますが、改行されませんし、なにかオプションで表示できるのであれば、そちらで実装したいと考えています。
以下のリンクでオプションをみてみたのですが、それっぽいのがパット見わからないのですが、実現する方法ありますでしょうか。
https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_chartLabel.htm

 
<apex:page id="Monitoring"
           controller="GraphController"
           showHeader="false"
           sideBar="false"
           docType="html-5.0"
           standardStylesheets="true"
           applyHtmlTag="false"
           readOnly="true">
    <html lang="ja">
    <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>

        <title>test</title>
    </head>
    <body>
    <apex:chart height="400px" width="400px" data="{!pieData}">
        <apex:pieSeries dataField="data" labelField="name" donut="50"/>
        <apex:legend position="right"/>
    </apex:chart>
    </body>
    </html>
</apex:page>



public with sharing class GraphController {

    public List<PieWedgeData> getPieData() {
        List<PieWedgeData> data = new List<PieWedgeData>();
        data.add(new PieWedgeData('Jan 50', 30));
        data.add(new PieWedgeData('Feb 15', 15));
        data.add(new PieWedgeData('Mar 10', 10));
        data.add(new PieWedgeData('Apr 20', 20));
        data.add(new PieWedgeData('May 20', 20));
        data.add(new PieWedgeData('Jun 5', 5));
        return data;
    }

    // Wrapper class
    public class PieWedgeData {

        public String name { get; set; }
        public Integer data { get; set; }

        public PieWedgeData(String name, Integer data) {
            this.name = name;
            this.data = data;
        }
    }
}

 
パッケージでインストールされたオブジェクトに対してトリガーを入れました。
すでに、そのパッケージでトリガーが仕込まれているようなのですが、
さらに、トリガーを作った場合、パッケージのトリガーが動いたあと、
自分のトリガが動く形になるでよいでしょうか。

実際に動かしたところ、after update にsystem.debugをいれてみたところ、
ログに2回出力されていたので、もしかしたら、パッケージからの更新が終わった後に1回
自分の更新が終わった後に1回なのかなと思いました。

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

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

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

開発はライトニングコンポーネントで行っています。まだ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」)となってしまいます。
開発の知識が乏しくお恥ずかしいですが、もし回避可能な方法があればご教授頂ければと思います。

以上、よろしくお願い致します。
VFページで、<apex:commandButton>でできた保存ボタンをクリックした後、
<apex:pageMessage>に以下が出力されてしまい保存ができません。

「<apex:inputText> 要素の値は、文字列型として解決する必要があります。」

おそらく、あるケースで、ページの一部の項目が、<apex:inputText disabled="true">となるケースがあり、
その時に発生していそうなので(disabled指定が無い場合は保存できます)
保存ボタンクリック時に、disabledを解除するjsをいれましたが、変わらず同じエラーになりました。

原因がわからず困っていますが、なにが原因と考えられますでしょうか。
ユーザオブジェクト(親)
└購入履歴オブジェクト(子(ユーザオブジェクトと1対多の関係)
└アンケートオブジェクト(子(物理的には1:多ですが、論理的にはユーザオブジェクトと1:1の関係))

上記のような構成の際、

購入履歴オブジェクトから、アンケートオブジェクトへはsoqlで辿れないかと思います。

この場合、以下のような感じで2本のSOQL実行してマージすることを考えましたが、
懸念事項ありますでしょうか。
また、より良い解決方法ありますでしょうか。

1.購入履歴とユーザオブジェクトを取得
2.アンケートとユーザオブジェクトを取得
3.for loop中でユーザIDで、購入履歴とアンケートオブジェクトをマージ
 
I know I can define a favicon for a Site, but can i define for a commnity site?
コミュニティにログインしていて、離席して30分後にかえってきたら
セッションタイムアウトになってエラーになることありますが、
セッションタイムアウトを検出する方法はどんな感じでできるでしょうか。

たとえば、jsでsetTimeoutで再帰的に30分間隔でセッションが無効かどうかリクエストを取得するなどが
定石になるのでしょうか。
画面からApexクラスの削除ボタンを押すと、

「このApex クラスは、Salesforce の他の場所で参照されています。それを削除してから、もう一度やり直してください。Apex ジョブ」

と表示され、Apexジョブがリンクになっているので、リンクをクリックすると、

「この URL は、現在存在しません。
アクセスを試みた URL は、salesforce.com にはもう存在しません。」

となってしまいます。
お世話になります!

コミュニティで

 https://aaa.cs6.force.com/bbb

のようなURLのサイトをつくったとき、

以下のURLへアクセスすると、

https://aaa.cs6.force.com/

SFエラーページが表示されてしまいます。

Siteの設定で、エラーページの編集して有効になるのは、/bbb以下のページになる為と思いますが、

/ でもエラーページをカスタムするにはどのようにしたらよいでしょうか。