前回は一体何書いたんだと思ったらDreamforceネタ投稿してました。
あれから2か月、もう幾つ寝るとWorldTourTokyo2015ですねというか今日ですね。
DreamforceについてはAstro君がかわいかったことしか思い出せません。
そんなこんなで今回は前々回の続き、FAQです。
といっても前と違って今は<SkyVisualEditor ナレッジ>が公開されており、大きなネタはこちらに掲載されております。
なので本記事で取り扱うのは基礎と言えば基礎だけどついつい見落としがち忘れがちなあれこれや、
便利だけのひょっとして知名度低い?な機能についてなどなど、
小ネタ的なものをいくつかを取り扱う、所謂重箱の隅を突く感じの内容になります。
其之壱 ~Sandbox環境と本番環境を使って開発するときの注意点~
まず始めに、
SkyVisualEditorで生成する画面はVisualforceページ・Apexクラスを使用しているため、
SkyVisualEditorから直接本番環境にデプロイするのではなく、一度Sandbox環境にデプロイしSalesforce標準機能である「変更セット」を使用して本番環境にリリースすることを推奨しております。
移行手順などの詳細については<Sandbox から本番環境への移行手順>をご参照ください。
では次に、Sandbox環境と本番環境を使った開発中、ついつい見落としがちな設定などをご紹介します。
1)移行先本番環境でもオブジェクト・項目の権限設定を確認
前々回でも触れましたが、SkyVisualEditorでは一部の機能を使用するためのカスタムオブジェクト
"SkyEditorDummy","SearchCondition"がパッケージに含まれています。
Sandbox環境で開発した画面を本番に移行したら項目が消えた?!
という時は本番環境で"SkyEditorDummy","SearchCondition"の権限設定をご確認ください...。
カスタムオブジェクトの権限設定はこちらに、項目の権限設定はこちらに詳細が記載されております。
2)Studioで接続先組織を選ぶときは組織の選択を間違わずに
SkyVisualEditorにログインしStudio画面を開くと、「Salesforce.com ログイン」ダイアログが表示され、
画面開発を行うSalesforce組織のログイン情報を入力します。
そして、実際にデプロイする時の「接続しているSalesforce組織の環境」選択。
②デプロイ先組織の選択
①で選択したログイン先組織に対応する環境を②で選択してください。
例)
◇接続先組織が本番環境の場合
①"Production/Developer Edition"を選択 ⇒ ②"本番環境"を選択
◇接続先組織がSandbox環境の場合
①"Sandbox"を選択 ⇒ ②"テスト環境(Sandbox/Developer Edition)"を選択
◇接続先組織がDeveloper環境の場合
①"Production/Developer Edition"を選択 ⇒ ②"テスト環境(Sandbox/Developer Edition)"を選択
この2か所の設定が不一致の場合、デプロイ時に以下のエラーが発生します。
このエラーは、①で"Salesforce本番環境"を選択し、②で"テスト環境"を選択すると発生します。
"INVALID_OPERATION: rollbackOnError option must be true on a production org"
Sandbox環境と本番環境で並行して開発を行う際などは、
現在Studioから接続している組織がどちらになっているのかご注意下さい。
其之弐 ~小ネタ集1 便利機能「項目追加取得」~
「Apexクラス拡張」で拡張クラスを実装した時などに以下のエラーに遭遇した経験はないでしょうか。
"SObject row was retrieved via SOQL without querying the requested field:Account.Name"
このエラーは、SVEで作成した画面上に配置していない項目を拡張クラスやマージフィールドで参照しようとすると発生します。
画面上に配置していない項目は、SVEが作成するApexクラスのSOQLに含まれない為、使用することが出来ません。
これは画面上に項目を配置(入力・表示項目どちらでも可)すれば回避できます。
しかし、「どうしてもこの項目は画面上で見せたくない」という場合があるかと思います。
そんな時は「項目追加取得」を使うことで、画面上に項目を追加することなく回避することが出来ます。
項目追加取得で選択された項目は、画面上に存在していなくてもSOQLに含まれる様になります。
主オブジェクト項目の設定場所はこちら。
ページプロパティ -> Apexクラス拡張 -> 主オブジェクト項目 追加取得
テーブルオブジェクト項目の設定場所はこちら。
データテーブルプロパティ -> 開発 -> オブジェクト項目 追加取得
其之参 ~小ネタ集2 便利機能「ページ・クラス一括削除」~
「ページ・クラス一括削除」機能は、文字通り組織にデプロイされたVisualforceページとApexクラスを削除します。
本番環境では直接削除することのできないApexクラスもここからクリック動作だけで削除が可能でとっても便利です。
本機能で削除されるのはSalesforce組織にあるVisualforceページ,Apexクラスですので、
Studioで保存しているデザインページには影響がありません。
なので、例えばSVEページで使用してる項目のデータ型を変更しようとしてこんなエラーに遭遇して、
「該当項目を削除してページをデプロイして組織でデータ型を変更してから再度項目を配置しデプロイし直すのって面倒」
という時は、組織からページとクラスを削除し、データ型を変更した後、改めてデプロイするということもできたりします。
以上、SkyVisualEditor FAQ Part2でした。
小ネタってレベルにも達してない気がしますが...個人的に便利だと思っているので取り上げてみました。
参考程度に捉えていただければ幸いです。