Skip to content

Instantly share code, notes, and snippets.

@MashmatrixSupport
Last active September 1, 2018 05:04
Show Gist options
  • Save MashmatrixSupport/8416f5da551d928d7b5917558d327392 to your computer and use it in GitHub Desktop.
Save MashmatrixSupport/8416f5da551d928d7b5917558d327392 to your computer and use it in GitHub Desktop.
見積/見積明細(詳細ページ埋込 + 上下連動)

セットアップ手順

  1. Mashmatrix Sheet アプリケーションより、新規にブックを作成(ブック名は「見積情報」などとする)。オブジェクトの選択画面で「見積」オブジェクトを選択
  2. (1) で作成したブックに新たにシートを追加し、オブジェクトの選択画面で「見積品目名」を選択する
  3. 作成されたブックの「見積」タブにおいて、列メニューから新規に列を追加し、親となるレコードへの参照項目となる項目を列として追加する(「商談ID」)
  4. (3) で追加した列にフィルタを設定し、「IDの比較参照先」として 関連するレコードID を選択し、フィルタを適用する
  5. ブック内の「見積品目」タブにおいて、列メニューから新規に列を追加し、見積レコードへの参照項目となる項目を列として追加する(「見積ID」)
  6. (5) で追加した列にフィルタを設定し、フィルタの値として ${params.QuoteId} を設定する
  7. ブックヘッダーの共有先メニューから、共有対象(共有先フォルダ)を設定する(自分のみ=>組織全体、など)
  8. 作成した2つのシートのタブのメニューから、シートの設定ダイアログを開き、ダイアログ内の情報からそれぞれのブックID/シートIDをコピーしてメモする。
  9. テンプレート(QuotesAndQuoteItems.xml) の内容を元に、値を適切に置き換えて、新規Visualforceページを作成する。
  • standarcController には埋め込み対象のSalesforceオブジェクトのAPI参照名を設定する
  • bookId および sheetId には 7. でメモした値を設定する
  • targetPath には7.でメモしたブックIDおよびシートIDを "/" で連結した値を設定する
  1. Salesforceの設定画面から、画面を埋め込む対象となるSalesforceオブジェクトのレイアウトを開き、8. で作成したVisualforceページをレイアウト内の任意の位置に配置する
  2. (9) で作成したVisualforceページのセキュリティ設定から、閲覧可なプロファイルを適切に設定する。
<!-- standardControllerには実際に埋め込むオブジェクトのAPI参照名(例:商談 => Opportunity)を入力する -->
<apex:page standardController="Opportunity">
<apex:form >
<!-- bookId/sheetIdに指定するブックID/シートIDはブックおよびシートの設定画面から取得したものに置き換える -->
<apex:pageBlock title="見積">
<msmxSheet:SheetView id="comp-01"
bookId="a000I00001eaVtQQAU"
sheetId="s1"
recordId="{!Id}"
width="100%"
height="300px"
/>
</apex:pageBlock>
<apex:pageBlock title="見積品目">
<msmxSheet:SheetView id="comp-02"
bookId="a000I00001eaVtQQAU"
sheetId="s2"
recordId="{!Id}"
width="100%"
height="300px"
/>
</apex:pageBlock>
</apex:form>
<script>
// チェックボックスで選択されたとき、選択されたレコードのIDでQuoteIdパラメータを更新
function handleRecords(params) {
var quoteIds = params.records.map(function(r) { return r.Id });
MsmxSheet.updateApplicationParameter({ QuoteId: quoteIds });
}
// セルがフォーカスされたとき、該当セルの行のレコードIDでQuoteIdパラメータを更新
function handleFocus(params) {
var quoteId = params.cell.recordId;
MsmxSheet.updateApplicationParameter({ QuoteId: quoteId });
}
// この値は実際の「見積」シートの bookId/sheetId で置き換える
var targetPath = 'a000I00001eaVtQQAU/s1'
MsmxSheet.subscribeComponentEvent('comp-01', targetPath, 'selectRecords', handleRecords);
MsmxSheet.subscribeComponentEvent('comp-01', targetPath, 'focusCell', handleFocus);
</script>
</apex:page>
@MashmatrixSupport
Copy link
Author

pe400 ___salesforce

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment