8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IM-FormaDesigner / IM-BIS クライアントサイドスクリプトAPIまとめ

Last updated at Posted at 2019-07-10

対象

  • 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によって異なる型で取得される。別画面アイテムでの取得方法は公式ドキュメント参照。
```Javascript:画面アイテム値取得 // 画面アイテムID:product_72_textbox // フィールド識別ID:textbox1 var data = formaItems.product_72_textbox.getItemData.textbox1(); // 結果:戻り値dataにはtextbox1入力値がstring型で入る ``` --- ##### 画面アイテム 値設定
void formaItems.%画面アイテムID%.setItemData.%フィールド識別ID%(object arg)
指定されたフィールド識別IDのコントロールより入力値を取得します。
 
戻り値 なし
 
パラメータ
argobject
arg.dataobject
arg.data.%フィールド識別ID%string
基本はこの形ですが、画面アイテムごとに細かいパラメータは変わってきます。詳しくは公式ドキュメント参照。
```Javascript:画面アイテム値設定 // 画面アイテムID:product_72_textbox // フィールド識別ID:textbox1 var arg = {}; arg.data = {}; arg.data.textbox1 = 'サンプルテキスト'; formaItems.product_72_textbox.setItemData.textbox1(arg); // 結果:texbox1にサンプルテキストが設定される ```

##DeveloperSite記載API

概要

API概要 API
画面アイテム 入力モード変更 formaItems.%画面アイテムID%.changeInputMode(object controlSetting)
ボタン(申請・登録)処理 sendRegistData()
ボタン(一時保存)処理 sendPreserveData(inputCheckFlag)
ボタン(次へ)処理 sendNextForm()
ボタン(戻る)処理 sendBackForm()
ボタン(一覧へ戻る)処理 sendBack()

詳細


画面アイテム 入力モード変更
void formaItems.%画面アイテムID%.changeInputMode(object controlSetting)
入力アイテムの入力不可・入力可状態を切り替えるためのAPI。指定可能なアイテムはIM-BIS仕様書参照
 
戻り値 なし
 
パラメータ
controlSettingobject
controlSetting.mode string 入力モード
controlSetting.inputIdstring フィールド識別ID
基本はこの形ですが、画面アイテムごとに細かいパラメータは変わってきます。詳しくはDeveloperSite参照。
```Javascript:画面アイテム入力モード変更 // 画面アイテムID:product_72_textbox // フィールド識別ID:textbox1 var controlSetting = {}; controlSetting.mode = "invalid"; // 入力可 valid・入力不可 invalid controlSetting.inputId = 'textbox1'; formaItems.product_72_textbox.changeInputMode(controlSetting); // 結果:texbox1が入力不可になる ``` --- ##### ボタン(申請・登録)処理
void sendRegistData()
申請・登録処理を呼び出します。申請・登録前に処理を挟むときに使用します。
 
戻り値 なし
--- ##### ボタン(一時保存)処理
bool sendPreserveData(string inputCheckFlag)
一時保存処理を呼び出します。
 
戻り値 bool
true:一時保存成功
false:一時保存失敗
 
パラメータ
inputCheckFlagstring
'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:入力エラーあり
 
パラメータ
inputCheckstring
'0'、引数省略:入力チェックプログラムを動作させない
'0'以外:入力チェックプログラムを動作させる
temporaryFlagbool
true:一時保存時の入力チェックを実行
false、引数省略:通常保存時の入力チェックを実行
formIdstring
入力チェック対象formIdを指定する
省略時、現在form指定
transitionOrderNonumber
画面遷移番号を指定する。省略時現在番号
```Javascript:入力チェック実行 var isError = inputCheck('1'); // 結果:申請・登録処理なしでサーバーサイド入力チェックが行われ、結果がisErrorに返却 ``` --- ##### エラー情報クリア
void formaClearError()
エラー表示エリアのクリアとコントロールのエラー表示クリア処理を行います。
 
戻り値 なし
--- ##### エラー情報表示
void showErrorInfo (object result)
入力エラーを表示します。画面上部エラーエリア、各コントロール対象。
エラー有無の判定は行わず、エラーメッセージ表示のみを行います。
 
戻り値 なし
 
パラメータ
resultobject
result.messageobject
画面上部のエラーメッセージ。改行コードを含めると改行表示される。
result.errorInfo[type][itemId]array
エラー内容。画面アイテムID毎、フィールド識別ID毎の配列となっている
 
--- ##### 項目エラー表示
void formaItems.%画面アイテムID%.AcceptError(object event)
画面項目エラー表示を行います。
 
戻り値 なし
 
パラメータ
eventobject
event.inputIdstring フィールド識別ID
```Javascript:項目エラー表示 // 画面アイテムID:product_72_textbox // フィールド識別ID:textbox1 var event = {}; event.inputId = 'textbox1'; formaItems.textbox1.AcceptError(event); // 結果:texbox1が入力エラーありコントロールとして表示される ``` --- ##### 項目エラー表示クリア
void formaItems.%画面アイテムID%.ClearError(object event)
画面項目エラー表示をクリアします。
 
戻り値 なし
 
パラメータ
eventobject
event.inputIdstring フィールド識別ID
```Javascript:項目エラー表示クリア // 画面アイテムID:product_72_textbox // フィールド識別ID:textbox1 var event = {}; event.inputId = 'textbox1'; formaItems.textbox1.ClearError(event); // 結果:texbox1の入力エラー表示がクリアされる ``` --- ##### 印刷
void printPage()
FormaのPDF出力機能にてフォームをPDF出力します。
 
戻り値 なし
--- ##### インジケータ表示
void formaIndicator(string target, bool mode)
インジケーターのON OFFを行います。
 
戻り値 なし
 
パラメータ
targetstring セレクタ
modebool
true:インジケーターのON
false:インジケーターのOFF
```Javascript:インジケーターのON formaIndicator($('#form_area'), true); // 結果:処理中を示すインジケーターが表示される ```
アラートメッセージ表示
void formaShowMessage(string message, string detailMessage)
アラートメッセージ表示を行います。
 
戻り値 なし
 
パラメータ
messagestring メッセージ
detailMessagestring 詳細メッセージ
--- ##### グリッドテーブル 列定義取得
array formaItems.product_80_gridtable.getColInfo[tableId]
グリッドテーブル 列定義取得を取得します。
 
戻り値 array
array[i]object 列情報
array[i].inputIdstring 列のフィールド識別ID
array[i].inputItemTypestring 列の画面アイテムID
array[i].inputFlagstring 列の入力可否フラグ
 
パラメータ
tableIdstring グリッドテーブルID
グリッドテーブル列定義取得
// テーブル識別ID:gt1
var colInfo = formaItems.product_80_gridtable.getColInfo['gt1'];
// 結果:gt1の列定義情報が取得される

グリッドテーブル 関数式実行
void formaItems.product_80_gridtable.doTableExpression(tableId)
グリッドテーブル内の関数式を再評価します。
グリッドテーブル内コントロールクリア時など関数式が評価されない
タイミングがありますが、これで対処できます。
 
戻り値 なし
 
パラメータ
tableIdstring グリッドテーブルID
```Javascript:グリッドテーブル関数式実行 // テーブル識別ID:gt1 formaItems.product_80_gridtable.doTableExpression('gt1'); // 結果:gt1の関数が再実行される ``` ---

##使用例
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

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?