tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Inside Dreamforce '18 Video

YoutubeでInside Dreamforce '18の動画リストが公開されていました。
f:id:tyoshikawa1106:20180923215403p:plain

Inside Dreamforce '18


下記のような動画がまとめられている再生リストです。

Inside Dreamforce '18: SWAG

Inside Dreamforce '18: DREAMOJI

Inside Dreamforce '18: The Heart of Dreamforce: The Campground


Inside Dreamforce '18: The Salesforce Events App

www.youtube.com

SFDC:レポートの検索条件にログインユーザの情報を動的に設定する方法

レポートの検索条件には$User.EmployeeNumberというようなグローバル変数を指定することはできません。こうした条件指定を行いたい場合は数式項目でフラグを用意する方法での対応が必要になります。

f:id:tyoshikawa1106:20180922131056p:plain

IF(EmployeeNumber__c = $User.EmployeeNumber ,true , false)


これでログインユーザの従業員番号情報と一致する従業員番号を持つデータを判別するといったことが可能になります。
f:id:tyoshikawa1106:20180922131153p:plain


f:id:tyoshikawa1106:20180922131253p:plain


動的に絞り込みたい条件分数式項目が必要になりますがこの方法で動的な条件指定が可能になります。詳細はこちらのヘルプにまとめられていました。


またURLパラメータをつかった絞り込みを行う方法があります。ClassicとLightning Experienceでパラメータの指定方法が異なるので設定の際には注意が必要ですが状況に応じて活用できそうです。

Lightning Experience での URL パラメータを介したレポートの絞り込み

SFDC:Dreamforce2018 - Contact usで問い合わせ

Dreamforce2018の登録情報で困ったことがあったのでContact usから問い合わせしてみました。ログイン後のMy INFOのメニューからアクセスできます。

f:id:tyoshikawa1106:20180922115356p:plain


f:id:tyoshikawa1106:20180922115513p:plain


Contact usのリンクをクリックすると表示される問い合わせフォームはこんな感じでした。氏名、メールアドレスとDreamforceの登録番号が必要になります。

f:id:tyoshikawa1106:20180922120012p:plain:w300


また問い合わせ内容によってTopicがわかれていました。

f:id:tyoshikawa1106:20180922115754p:plain:w300


問い合わせフォームに質問を入力すると登録完了の通知メールが来ます。数日後にサポート担当の方から回答メールが届く流れでした。

今回質問したこと

Dreamforceの参加登録を6月に行ったのですが8月から別の職場で勤務することになったので参加申込時に登録した会社名を変更する必要がありました。登録情報の変更ページを見ても会社名の変更ができないようになっていたので問い合わせフォームから相談しました。


ちなみに登録時にSalesforceアカウントで認証が必要になるのですがそちらはDeveloper Edtionのアカウントで登録していたので特に影響はありませんでした。

やりとりの流れ

「勤務先が変わったので登録した会社名を次の会社名にに変更したいです」
  ↓
「会社名の変更ですね。登録情報を確認したところ個人組織のアカウントで登録されているみたいです。ご希望の会社名に変更する場合はその会社の組織で認証登録が必要です。」
  ↓
「前の会社の名前のままにはできないので、別の内容に変更できませんか?」
  ↓
「Independent (独立/自営)への変更なら可能です。変更が適用されるのは3から5営業日です。」
  ↓
「ありがとうございます。お願いします。」


・・・という感じでやりとりが進み無事に会社名の登録情報が更新されました。参加登録時には会社名のチェックはそれほど厳しくありませんが、変更の場合は認証時のSalesforceアカウントでチェックが入るみたいです。


後は変更後の登録情報で改めてDreamforceの登録通知メールも届くようになっていました。そちらで正しく変更されているかを確認できました。


2019年以降のDraemforce参加登録後に困ったことがあれば同じようにContact usのような問い合わせページが用意されていると思います。サポート担当の方とのやりとりは英語になりますがGoogle翻訳レベルでも特に問題なくやりとりできました。

SFDC:Name項目のデータ型選択について

SalesforceオブジェクトのName項目とデータ型選択についてです。

f:id:tyoshikawa1106:20180919062825p:plain


Name項目はレコード作成の際に必須となる項目で、「テキスト型」と「自動採番型」の2種類から選択できます。
f:id:tyoshikawa1106:20180919062628p:plain


テキスト型は値を自由に入力したい場合に使用します。取引先名や商談名とよく目にする使われ方をしているデータ型です。
f:id:tyoshikawa1106:20180919063105p:plain


もう一つの自動採番型はデータ登録後に自動で値を生成してくれるデータ型です。重複しないユニークな値が生成されるので申請や請求などを管理するオブジェクトで利用できます。
f:id:tyoshikawa1106:20180919063358p:plain


f:id:tyoshikawa1106:20180919063431p:plain


自動採番型は指定した文字列を表示できるプレフィックスの機能も用意されています。文字数の上限がありプレフィックスが利用できる文字数も決まっているので長い値にしたい場合は注意が必要です。
f:id:tyoshikawa1106:20180919063739p:plain


プレフィックスの機能で「2018-01-01-00001」というように本日日付+自動採番された値という組み合わせの値を生成することができます。採番で00001というように5桁用意したとしてレコード数が5桁分使い切ると0に戻るのではなく6桁目を生成します。はじめに余裕を持って桁を確保しておくのがいいと思います。

ApexとName項目のテキスト型

ApexとName項目のテキスト型の組み合わせで一つ面白い使い方ができます。
f:id:tyoshikawa1106:20180919064732p:plain


上で記載したとおりテキスト型は必須項目のため画面から未入力で保存しようとするとエラーとなります。
f:id:tyoshikawa1106:20180919064946p:plain


ですがApexから登録する場合はこのエラー判定がスキップされます。
f:id:tyoshikawa1106:20180919065021p:plain


この方法でデータを作成するとName項目にはレコードIDがセットされて登録されます。
f:id:tyoshikawa1106:20180919065154p:plain


これはカスタムオブジェクトでのみ適用される仕様で標準オブジェクトの場合はApex経由でもエラーとなります。


この仕組みを利用してApexでデータを作成してName項目にレコードIDをセットして自動採番の代わりにしようと思いつく場合があるかもしれません。ですがレコードIDをセットして管理する方法は下記の問題が発生します。

ユーザが自由に編集可能

テキスト型のためユーザが自由に値を書き換えることが可能です。Name項目 = レコードIDというルールは保証されなくなります。もしもレコードIDを見える位置に表示したい場合は数式項目を用意した方が確実です。
f:id:tyoshikawa1106:20180919065902p:plain

重複可能

テキスト型はユニークチェックは実行されないため同じ値のデータを作成することが可能です。そのため自動採番の代わりとして運用しようとすると思わぬトラブルが発生します。Apexを経由して作成する前提のオブジェクトと考えたとしてもこうしたデータを作成できてしまう時点で品質が低下していまいます。
f:id:tyoshikawa1106:20180919070200p:plain

手作成によるデータ登録時の問題

Apexでの作成が前提としたルールがあったとしても状況に応じてどうしても手作業で新規データ登録を行う場面が出てくると思います。仮にBeforeトリガを用意して保存後に値を入れ直す処理を実装したとしてもユーザは一度何かしらの値を入力する必要があるため無用な混乱を招いてしまいます。
f:id:tyoshikawa1106:20180919070558p:plain


以上の理由からName項目にレコードIDをセットして自動採番の代わりにするという運用は個人的にオススメできません。無理に複雑な仕組みで運用するのではなく自動採番型で管理するのが良いと思います。

Name項目とルックアップ項目

Name項目はルックアップ項目で目立つ位置に表示されます。
f:id:tyoshikawa1106:20180919071254p:plain


自動採番された番号だと直感的に選択しにくいような用途のオブジェクトの場合はテキスト型で管理するのがいいと思います。ルックアップ検索時はName項目の他に別の項目を表示することが可能です。同じ値のデータと区別がしずらい場合はこの仕組みで判別できると思います。
f:id:tyoshikawa1106:20180919071611p:plain:w300

SFDC:LEXでも動くVisualforce開発のサンプルコードを作ってみました

Lightning Experienceでも動くVisualforce開発のサンプルコードを作ってみました。Lightning Design SystemとAngularJS 1をつかった開発のサンプルになります。

f:id:tyoshikawa1106:20180917222616p:plain

GitHub - tyoshikawa1106/apex-trailblazer-pack: Apex Trailblazer Pack

取引先検索画面

商談商品一括登録画面

VisualforceとJavascript

Visualforceの開発といえばapexタグをつかった開発ですが、2015年頃にHTML5とJavascript中心の開発が推奨されるようになりました。

f:id:tyoshikawa1106:20180917184027p:plain

f:id:tyoshikawa1106:20180917184051p:plain



2015年にはLightning Design SystemというCSSフレームワークも公開されました。独自タグを使わなくてもSalesforceのデザインに合わせた画面開発が可能になっているのでapexタグに頼らずにJavascript Remotingの仕組みで開発していくとより使いやすい画面を開発できると思います。

関連記事

SFDC:Dreamforce 2018 同時通訳用レシーバの貸し出しフォーム

Trailblazer Communityに同時通訳用レシーバの貸し出しフォームについての共有がありました。

f:id:tyoshikawa1106:20180917142707p:plain

https://success.salesforce.com/0D53A00003oxcMZ


フォームのPDFについてはコメント欄に添付があります。
f:id:tyoshikawa1106:20180917142802p:plain


現地で記載するのは大変だと思うので先に印刷して準備しておいたほうが良さそうです。