Sitesセールスフォースの豆知識セールスフォースの開発に役立つTIPSをメインに、新機能や関連ニュースなどをお届けします。(8~10)玉澤です。Tipsの残り3つを紹介します。Salesforce標準のログイン画面をブランディングするSalesforceの標準のログイン画面を変えたい、お客様の会社のイメージでブランディングしたいときに役立つTipsです。下記の手順で、Salesforce標準のログイン画面をカスタマイズできます。[管理]→[ドメイン管理]→[私のドメイン]から組織のサブドメインを登録します。※組織のサブドメインは一度しか登録できないため、慎重に選択してください。登録したら、↓のような画面になるので、「こちらをクリックしてログインしてください」を押下して、ドメインのテストを実施します。テスト後、↓のような画面になるので、「ユーザにリリース」を押下して、リリースします。※新しいドメイン名をリリースした後は、元に戻せません。リリース後は、すべてのユーザが新しいドメインにリダイレクトされるので、注意してください。リリース後、ログインページのブランド設定が表示されるので、ロゴ、背景色、右フレームのURLを表示します。設定後、リリースしたドメインにアクセスすると、↓のように、ログイン画面がカスタマイズされて表示されるようになります。タブのデフォルト表示を「最近使った○○」ではなくするタブをクリックしたときに、「最近使った○○」(※○○はオブジェクト名)というビューではなく、通常のビュー画面をデフォルト表示したい場合に役立つTipsです。通常のビュー画面を表示するVisualforceページを作成します。↓のコードを書けばOKです。/></apex:page>次に、タブのデフォルト表示を変更したいオブジェクトの設定画面を開き、「ボタン、リンク、およびアクション」セクションで、タブの設定編集リンクをクリックします。タブの設定編集画面で、上書き手段で「Visualforceページ」を選択し、先程作成したVisualforceページを選択します。すると、タブをクリックしたときに、「最近使った○○」というビューではなく、通常のビュー画面が表示されるようになります。レコード詳細画面にグラフを表示するレコードの詳細画面にグラフを表示したいときに役立つTipsです。対象のレコードに関連するレポート結果だけをグラフ表示できます。ここでは、取引先レコードの詳細画面で、その取引先の商談をフェーズ毎に集計したグラフを表示する方法を例に説明します。レポートをグラフ付きで作成します(今回の例では、標準の商談レポートタイプで、フェーズ毎に集計したサマリレポートを作成します)。次にグラフを表示したいオブジェクトのページレイアウトの設定画面を表示します。レポートグラフのセクションに、先程作成したレポートが表示されているので、ドラッグ&ドロップでレイアウトに追加します(今回の例では、取引先のページレイアウトを表示し、先程作成したレポートグラフを追加します)。追加後、プロパティ設定で、表示サイズ、タイトル表示の有無、絞り込み条件を設定します。グラフは、元々のレポートの集計結果から、更に絞り込み条件で指定した項目で絞り込んだ結果が表示されます(今回の例では、取引先IDを指定して、その取引先の商談だけが表示されるようにします)。設定すると、↓のように、レコード詳細画面でグラフが表示されるようになります(今回の例では、取引先レコードの詳細画面で、その取引先の商談をフェーズ毎に集計したグラフが表示されます)。エンジニアの若葉です。10撰」という題目でネタを持ち寄ったので、とりあえず3つ程ご紹介しますね。標準ボタンによる画面リロードまず、標準のリストビューにビューの選択状態を保ったままリロードする方法をご紹介します。ような状態が遷移するオブジェクトがある場合、1各ステータスに応じたリストビューを設定してステータスごとにデータを管理する2一括で状態を更新するApexを書いて、リストビューにカスタムボタンを配置3カスタムボタンを実行したら、更新ボタンでリフレッシュして、現在のビューから当該のデータを追い出すなんてケースが良くあるかと思います。更新ボタンを押し忘れて、処理済みのデータを対象に再度更新処理を実行してしまう恐れが残ります。}}現在のビューを保ったままリロードができます。事故の防止、操作の簡易化が図れてとても便利ですね。Sitesで強制SSL次ですが、Sitesで公開WEBフォームを作る際、住所情報などを登録するのでSSLアクセスが必須となるケースが良くあります。設定によってSSLアクセスを強制できる助かるのですが、残念ながらその設定は無いようです。毎回リファレンスを見直しているので、この際整理してみました。使用するAPIプロトコルの確認URL.getProtcol()現在のセキュアなドメインの取得Site.getBaseSecureUrl()現在のPathの取得URL.getPath()Sitesのドメインはsand/prod間でドメインが異なるので、環境差分を吸収するのに一工夫必要です。このAPIを知るまでは、この環境違いへ対応するのにカスタム表示ラベルに切り出すなど、悲しい対応をしていました。Pathの取得はちょっと注意が必要で、取得できるPathは実際のURL中に現れない「/apex」が含まれてしまうので、リダイレクトさせるには、これを除外する必要あります。こんな感じで、現在のURLを取り扱うクラスを定義しておくと、コントローラからシンプルに呼び出せて、使いまわしが簡単になります。許可されていませんこの例外が原因となっているケースがたまにあります。}}これは、例えば上記のサンプルでいうと、User(1)とAccount(2)は、同一トランザクションでInsert/Updateできない、というような制限です。詳細は以下のリンクから確認できますが、制限の理由は、UserもAccountも、アクセスする側とされる側、としてレコードの共有情報を更新する必要があり、それは各々のDMLを直列に確定させないと正しく処理できない可能性があるためのようです。http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_dml_non_mix_sobjects.htm上記のサンプルのように、プロダクトコードのみでは該当しないけど、テストデータとしてUserを事前にInsertすることは多いので、この制限はテストコードでよく遭遇します。制限だから仕方いないかと思いきや、そこはちゃんとテストコード用に回避策が用意されています。ブロックで囲ってあげれば、それだけでOKです。アクセス制御に関するテストはどうなるんだろ?とか追加の調査の余地はありますが、とりあえずは回避策があるので良しとしておきます。・HerokuやAWSなどのクラウドプラットフォーム上でのWebアプリケーション開発エンジニア、マネージャーを募集中です。・認定デベロッパーが在籍している、セールスフォースパートナーです。partnersにも登録されています。Salesforce/Force.com導入支援サービス弊社の認定プロフェッショナルが支援致します。・Salesforceと連携するWebアプリ開発も承っております。セールスフォースご検討の際は、お気軽にお問合せください。参加レポートSalesforceはじめました。その4Salesforceはじめました。その3Salesforceはじめました。その2Salesforceはじめました。sharingキーワード)。