対象
- intra-mart Accel Platform 2018 Winter調べ
- IM-FormaDesiner / IM-BIS
- カスタムスクリプト(JavaScript)
情報元
公式ドキュメント IM-BIS仕様書
安心して使えます。intra-mart公式問い合わせ可能。
IM-BIS for Accel Platform IM-BIS 仕様書 クライアントサイドスクリプトAPI
https://www.intra-mart.jp/document/library/bis/public/bis_specification/texts/spec/csjs_script.html
Developer Site
Developer Siteにしか載っていないAPIです。Developer Site内容については公式サポートの取り扱いにはならないためサポートなしです。
自己責任で使用することになります。間違ったことは書いていない、APIも長年変更がないため大体安心して使えます。
https://www.intra-mart.jp/support/information/texts/infolist/index.html
intra-mart Developer Site Formaでのスクリプト開発生産性向上
https://dev.intra-mart.jp/forma_2/
intra-mart Developer Site Formaボタンアイテムのクリック時に任意の処理を追加するには
https://dev.intra-mart.jp/post-434/
非公開
非公開API。もちろんサポートなしなので取り扱い注意。自己責任で使用してください。
ソース読むと変なことは書いてないですし、自分で同じ動きを実現しようとしても似たようなコードになるので非公開でもAPI使っておいたほうが良いケースが多いです。
スマホ版とPC版対応になるのが一番のメリットでしょうか。内部動作実現のために使われているので動きは確かなはず。
クライアントサイドスクリプトAPI一覧
公式ドキュメント IM-BIS仕様書 記載API
概要
API概要 | API |
---|---|
画面アイテム 値取得 | formaItems.%画面アイテムID%.getItemData.%フィールド識別ID%() |
画面アイテム 値設定 | formaItems.%画面アイテムID%.setItemData.%フィールド識別ID%(object arg) |
詳細
画面アイテム 値取得
- object formaItems.%画面アイテムID%.getItemData.%フィールド識別ID%()
- 指定されたフィールド識別IDのコントロールより入力値を取得します。
- 戻り値 object
- 画面アイテムIDによって異なる型で取得される。別画面アイテムでの取得方法は公式ドキュメント参照。
- void formaItems.%画面アイテムID%.setItemData.%フィールド識別ID%(object arg)
- 指定されたフィールド識別IDのコントロールより入力値を取得します。
- 戻り値 なし
- パラメータ
- arg:object
- arg.data:object
- arg.data.%フィールド識別ID%:string
- 基本はこの形ですが、画面アイテムごとに細かいパラメータは変わってきます。詳しくは公式ドキュメント参照。
##DeveloperSite記載API
概要
API概要 | API |
---|---|
画面アイテム 入力モード変更 | formaItems.%画面アイテムID%.changeInputMode(object controlSetting) |
ボタン(申請・登録)処理 | sendRegistData() |
ボタン(一時保存)処理 | sendPreserveData(inputCheckFlag) |
ボタン(次へ)処理 | sendNextForm() |
ボタン(戻る)処理 | sendBackForm() |
ボタン(一覧へ戻る)処理 | sendBack() |
詳細
画面アイテム 入力モード変更
- void formaItems.%画面アイテムID%.changeInputMode(object controlSetting)
- 入力アイテムの入力不可・入力可状態を切り替えるためのAPI。指定可能なアイテムはIM-BIS仕様書参照
- 戻り値 なし
- パラメータ
- controlSetting:object
- controlSetting.mode :string 入力モード
- controlSetting.inputId:string フィールド識別ID
- 基本はこの形ですが、画面アイテムごとに細かいパラメータは変わってきます。詳しくはDeveloperSite参照。
- void sendRegistData()
- 申請・登録処理を呼び出します。申請・登録前に処理を挟むときに使用します。
- 戻り値 なし
- bool sendPreserveData(string inputCheckFlag)
- 一時保存処理を呼び出します。
- 戻り値 bool
- true:一時保存成功
- false:一時保存失敗
- パラメータ
- inputCheckFlag:string
- '0' :最低限のチェック
- '0'以外 :入力チェックをフルで実行
- inputCheckFlagが'0'の場合は、数値チェックなどシステムエラーを発生させないための最低限の入力チェックのみが実行されます。
- void sendNextForm()
- フォーム遷移設定で指定されている次のフォームへの遷移処理を呼び出します。
- 子画面遷移については、対象外となります。
- 戻り値 なし
- void sendBackForm()
- フォーム遷移設定で指定されている一つ前のフォームへの遷移処理を呼び出します。
- 子画面遷移については、対象外となります。
- 戻り値 なし
- void sendBack()
- 一覧画面への遷移処理を呼び出します。
- 戻り値 なし
##非公開API
概要
API概要 | API |
---|---|
入力チェック実行 | inputCheck (inputCheck, temporaryFlag, formId, transitionOrderNo) |
エラー情報クリア関数 | formaClearError() |
エラー情報表示 | showErrorInfo(result) |
項目エラー表示 | formaItems.%画面アイテムID%.AcceptError(event) |
項目エラー表示クリア | formaItems.%画面アイテムID%.ClearError(event) |
印刷 | printPage() |
インジケータ表示 | formaIndicator(target, mode) |
アラートメッセージ表示 | formaShowMessage(message, detailMessage) |
グリッドテーブル 列定義取得 | formaItems.product_80_gridtable.getColInfo[tableId] |
グリッドテーブル 関数式実行 | formaItems.product_80_gridtable.doTableExpression(tableId) |
詳細
入力チェック実行
- bool inputCheck (string inputCheck, bool temporaryFlag, string formId, string transitionOrderNo)
- クライアントサイドからサーバーサイド入力チェックを実行し結果を取得します。
- 戻り値 bool
- true:入力エラーなし
- false:入力エラーあり
- パラメータ
- inputCheck:string
- '0'、引数省略:入力チェックプログラムを動作させない
- '0'以外:入力チェックプログラムを動作させる
- temporaryFlag:bool
- true:一時保存時の入力チェックを実行
- false、引数省略:通常保存時の入力チェックを実行
- formId:string
- 入力チェック対象formIdを指定する
- 省略時、現在form指定
- transitionOrderNo:number
- 画面遷移番号を指定する。省略時現在番号
- void formaClearError()
- エラー表示エリアのクリアとコントロールのエラー表示クリア処理を行います。
- 戻り値 なし
- void showErrorInfo (object result)
- 入力エラーを表示します。画面上部エラーエリア、各コントロール対象。
- エラー有無の判定は行わず、エラーメッセージ表示のみを行います。
- 戻り値 なし
- パラメータ
- result:object
- result.message:object
- 画面上部のエラーメッセージ。改行コードを含めると改行表示される。
- result.errorInfo[type][itemId]:array
- エラー内容。画面アイテムID毎、フィールド識別ID毎の配列となっている
- void formaItems.%画面アイテムID%.AcceptError(object event)
- 画面項目エラー表示を行います。
- 戻り値 なし
- パラメータ
- event:object
- event.inputId:string フィールド識別ID
- void formaItems.%画面アイテムID%.ClearError(object event)
- 画面項目エラー表示をクリアします。
- 戻り値 なし
- パラメータ
- event:object
- event.inputId:string フィールド識別ID
- void printPage()
- FormaのPDF出力機能にてフォームをPDF出力します。
- 戻り値 なし
- void formaIndicator(string target, bool mode)
- インジケーターのON OFFを行います。
- 戻り値 なし
- パラメータ
- target:string セレクタ
- mode:bool
- true:インジケーターのON
- false:インジケーターのOFF
アラートメッセージ表示
- void formaShowMessage(string message, string detailMessage)
- アラートメッセージ表示を行います。
- 戻り値 なし
- パラメータ
- message:string メッセージ
- detailMessage:string 詳細メッセージ
- array formaItems.product_80_gridtable.getColInfo[tableId]
- グリッドテーブル 列定義取得を取得します。
- 戻り値 array
- array[i]:object 列情報
- array[i].inputId:string 列のフィールド識別ID
- array[i].inputItemType:string 列の画面アイテムID
- array[i].inputFlag:string 列の入力可否フラグ
- パラメータ
- tableId:string グリッドテーブルID
// テーブル識別ID:gt1
var colInfo = formaItems.product_80_gridtable.getColInfo['gt1'];
// 結果:gt1の列定義情報が取得される
グリッドテーブル 関数式実行
- void formaItems.product_80_gridtable.doTableExpression(tableId)
- グリッドテーブル内の関数式を再評価します。
- グリッドテーブル内コントロールクリア時など関数式が評価されない
- タイミングがありますが、これで対処できます。
- 戻り値 なし
- パラメータ
- tableId:string グリッドテーブルID
##使用例
IM-FormaDesigner / IM-BISで先頭空白行ありセレクトボックス ドリルダウン処理実装
https://qiita.com/doriburu/items/dd578f9276f25c7a984e
IM-FormaDesigner / IM-BIS セレクトボックス Option値をAPIで設定する
https://qiita.com/doriburu/items/639e7104ac33911c0e1c
IM-FormaDesigner クライアントサイドスクリプトで入力チェックエラー時の強調表示をON OFFする
https://qiita.com/doriburu/items/9171c18f28800228191c
##グリッドテーブルと明細テーブルについて
グリッドテーブルはJqgirdを使っている。JqgridのAPIを使って制御する方法もある。
http://www.trirand.com/jqgridwiki/doku.php
明細テーブルはjQueryUI sortableを使っている。これもjQueryUI sortableのAPIを使って制御しても良い。
https://api.jqueryui.com/sortable/
実装例が下記にある
https://qiita.com/doriburu/items/22a41bc287866dbc57a3