前回の記事「CDSでヘッダー&ラインの伝票フォームを作る(1)」では明細テーブルにヘッダーテーブルを紐づけて伝票形式で入力するフォームを作成しました。ですが、明細時に明細行のフォームに切り替える必要がありました。今回はこれを改良し、明細行を一覧画面で入力できるようにします。
1. 明細行部分を編集可能サブグリッドに変更する
伝票形式のフォームに対して設定変更が必要なのでヘッダーエンティティフォームタブから街頭のフォームを選択して「編集フォーム」を選択。

エディターが開き、伝票形式のフォームが表示された。ここで「クラシックに切り替える」を選択。

昔ながらのCRMの画面カスタマイズ画面が開く。(”クラシック”=旧CRM画面、っぽい)

明細行の部分のコントロールを選択し、プロパティの変更を押す。

するとこのような画面が表示される。明細行部分のコントロールは正式にはサブグリッドと呼ばれていること、このサブグリッドには明細行エンティティが紐づけられていることがわかる。

コントロールタブに移り、「コントロールの追加」をクリックする。

すると追加するコントロールの候補が表示される。下まで行く。

おそらく一番下にある「編集可能グリッド」を選択し「追加」を押す。

「編集可能グリッド」行が追加された。

もともとあった「読み取り専用グリッド」に「編集可能グリッド」が追加されたので、既定のグリッドを決める必要がある。ブラウザで開いた場合/スマホで開いた場合/タブレットで開いた場合、の3ケースに対して読取専用/編集可能のどちらを規定にするかを決めることができる。ブラウザの場合に編集可能をデフォルトにする場合は以下のように設定する。そしてOKを選択。

そのままだとエラーになる。。「名前」の規則エラーと書いてある。

表示タブに移り「名前」を確認するとカタナカになっている。これが原因。

英数字に変更して改めてOKを押す。

エラーは解消された。ここで「保存」をクリック。

保存したら公開。

公開したら戻る。戻るボタンがないので×印で閉じる。

先の画面で保存、公開したのでここの画面は戻るだけ。

2. データを登録する。
明細行が編集可能になったか実際にデータを登録して確認する。ヘッダーエンティティのデータタブに移動。

前回作成したレコードを選択し、レコードの編集をクリック。

伝票画面が開いた。明細行にカーソルを合わせると確かに直接編集可能になっている。(成功!)

(微妙な点その1)
試しに数量を打ち換えて他の項目にフォーカスを移してみると金額はこの時点では変更されない。右側の保存ボタンを押すと、、

変更される。この辺り、ERPをやっていると変更した項目をロストフォーカスしたタイミングで再計算して欲しいと思うところ。(方法はありそうで、調査中)

(微妙な点その2)
単価×数量の計算結果を入力している「金額(税抜)」も編集できてしまうw
いちおう、上書き保存すると、、

再計算されて正しい値が保存されるので最終的に問題は起きない。前半部分の設定で「編集可能」なサブグリッドを追加したので当然といえば当然だが、入力不可項目は設定できてほしいところ。(これは調査中)

3. まとめ
伝票画面フォームのサブグリッドのプロパティに編集可能サブグリッドを追加することにより、伝票画面で直接明細入力が可能になる。が、細かい挙動についてこなれた感じにするには追加設定が必要。