D365BCのEdit in Excel の裏側


今回はD365BCのEdit in Excelの裏側を紹介します。前回の記事では Edit in Excel のデザイン機能を使用して複数のテーブルを更新する方法を紹介しました。Edit in Excelのデータ更新の裏側で起きていることを今回は説明します。

ポイントは2点です
1.Edit in Excel のブックには隠しシートがあり、そのシートでデータ更新の制御をしている。
2.Edit in Excel でExcelをダウンロードする際にWeb Serviceが追加される

順にみていきます。

1.Edit in Excel のブックには隠しシートがあり、そのシートでデータ更新の制御をしている。
まずは前回ダウンロードしたPayment Methodのブックを開きます。(複数テーブル更新可能にするのブックです。)このブックを開いた状態でALT+F11を押します。

するとVBのエディタが開きます。左上の枠(プロジェクトエクスプローラ)を見るとシートが2つあります。Sheet2(data_cashe)をクリックして左下の枠のVisible属性を見ると「2-xSheetVeryHidden」となっています。この値だとシート非表示なので「-1 -xSheetVisible」に変更します。

Excelブックに戻るとdata_casheシートが表示されました。D列の値を見るとPaymentMehodのコードが入っていることがわかります。公開ボタンをクリックしたとき、コネクタの機能でSheet1からdata_casheシートにいったんデータが書き込まれ、コネクタの機能でBCにデータが1件ずつpostされる、という仕組みのようです。(なので、このシートを壊さないようA1セルに警告が書かれています。)

前回加工した複数テーブルを更新可能なブックはどうなっているでしょうか?
同様の手順でdata_casheシートをvisibleにしてみます。するとこのようになっています。D列の前半6件がCustomerのレコードになっています。

そして、7件目以降がPaymentMethodであることがわかります。 A列にテーブル名、B列に件数が表れています。ゼロから開始しているで若干分かりにくいですがCustomerはD3セルを起点としてD3セルの0行下(つまりD3セル)から開始し、PaymentMethodはD3セルの6行下(つまりD9セル)から開始している、ということです。

2.Edit in Excel でExcelをダウンロードする際にWeb Serviceが追加される
次にデザインボタンを押します。ここから、テーブルを追加できるわけですが、テーブルの選択肢がどのように追加されるかを見ていきます。

このブックはPaymentMethodとCustomerのテーブルをすでに追加しているのでデータソースに2つ追加されます。ここで「テーブルの追加」をクリックします。

すると追加可能なテーブルの一覧が表示されました。前回追加してPaymentMethodはここに表示されています。もちろん、Customerもここに表示されています。さて、このリストはどこで定義されているのでしょうか?
唐突ですが、ここでPaymentTermsというテーブルが選択肢にないことを覚えておいてください。(後で説明します)

BCに戻ってWebServcieを見るとCustomerとPaymentMethodが存在します。答えはWebServiceです。
と言われて信じますか? というのは、Edit in Excelはほとんどのリストページで可能である一方、WebServiceの一覧にのっている件数は100件くらいです。残りのリストページはWebServiceの一覧に存在しないのに Edit in Excel できるじゃないか?という疑問が湧きます。
(ちなみにここでもPaymentTermsが存在しないことを覚えておいてください。)

この疑問の答えは、見出しにも書いた通り「Edit in Excel を実行した時点で対象テーブルのWebServcie明細が追加される」です。このことはPaymetTerms(決済方法)テーブルを使ってみていきましょう。まずはPaymetTermsのリストページを表示します。このリストページの番号をPage Inspection機能(Ctrl+Alt+F1)で確認しておきます。Page番号4:Payment Termsであることがわかります。そしてEdit in Excelボタンをクリックします。

ダウンロードされたPaymentTermsのExcelブックを開きます。デザインモードでテーブルの追加ボタンをクリックします。

するとPaymentTermsが選択肢に表示されます。一見すると当然ですが、、PaymentTermsのEdit in Excelを実行する前はここには登場していませんでした。(4つ上の画像を見てみてください。)つまり、Edit in Excelを実行したことでここに追加されました。

今度はBCのWebServiceを見てみます。PaymentTermsが追加されていることがわかります。つまり、Edit in Excelを実行することでWebServiceに追加されたことになります。

少し見方を変えます。前回作成したCustomerとPaymentMethodのExcelに戻ります。先ほど開いていたので保存せずにいったん閉じて再度開きます。そしてデザインボタンでテーブル追加すると一覧に追加されていることがわかります。つまり、追加対象テーブルのリストはExcel側で保存しているのではなく、コネクタがBCのWebServiceからブックのオープン都度取得していることがわかります。

WebServiceの一覧でPaymentTermsの明細を削除してからもう一度ブックを開いてみるとこのリストには登場しなくなります。試してみてください。

複数テーブルを Edit in Excel で編集したい場合、先に対象テーブルを Edit in Excel してWeb Serviceの明細を作成しておくと良いです。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です