前回の記事「CDSのエンティティデータをExcelで編集する(2)」ではCDSのエンティティデータをExcelで編集する際に1Excelブックで複数エンティティを編集しようとするとエラーになる事を紹介しました。今回の記事ではDynamics 365 Business Central ではエラーにならない事を説明します。
(D365BC的には以前の記事「D365BCのデータをExcelから更新する(1)」と「D365BCのデータをExcelから更新する(2)」の続編になります。)
まずはD365BCにサインイン。サインインの方法は過去記事参照で割愛。サインイン直後の画面で虫眼鏡ボタンをクリック。
「Payment」という単語で検索し、「Payment Method」機能を実行します。
支払方法(ex.銀行払いとか、クレカ払いとか)を管理するマスタです。Pageタブから「Edit in Excel」をクリック。
すると、Excelがダウンロードされますので開きます。(今回はChromeで実行しています。たのブラウザの場合、それぞれに応じてダウンロードファイルの場所を特定して開いてください。)
この時点ではデータが表示されません。「編集を有効にする」をクリック。
Payment Method(決済方法)の一覧が表示されました。認証を要求された場合、D365BCにサインインしているアカウントで認証を通して下さい。CDSと異なり、D365BCの場合はこの時点でデザインボタンが表示されています。(2019/12/22時点では)
デザインボタンは後回しにして、Excelブックを開いた状態で Alt + F11 を押します。するとVBAのエンティティデータが開きます。CDSの Edit in Excel と同様に「data_cache」という隠しシートがあります。
data_cacheシートのVisibleプロパティを、、
「-1 – xlSheetVisible」に変更します。
CDS同様、data_cacheシートが表示され、OData/Jsonで制御されていることが分かります。
別のエンティティを編集する用のシートを1枚新規作成した後、デザインボタンを押します。
「+テーブルの追加」を指定し、
追加対象テーブルをプルダウンから選びます。
今回は Payment Terms にします。Payment Method と名前が似ていますが「支払条件」という別のエンティティです。(月末締め翌々月末払い、のような支払サイトを管理するマスタです。)
エンティティとしてPayment Termsを選択したら「次へ」。
次はExcelで編集する対象のフィールドを選択します。
「使用可能なフィールド」から対象のエンティティのフィールどを一つないし複数選択し、「選択されたフィールド」の「追加」をクリック。今回は全項目を選択しました。
「選択されたフィールド」に先に選択した項目がセットされた事を確認して「完了」。
上書き注意メッセージが表示されますが、特に困る事は無いので「はい」を選択。
Payment Terms の列項目がExcelに表示されました。コネクタのダイアログには Payment Method と Payment Terms の両方のテーブルが表示されています。「完了」をクリック。
データは表示されません。。「更新」をクリックしてみます。
無事、データが表示されました!
両方のエンティティにデータを更新可能でしょうか?
試してみましょう。Payment Termsに1レコード追加し、、
Payment Methodにも1レコード追加し、「公開」をクリック。
レコードが追加されたか確認します。
Payment Methodは問題なく追加されています。
PaymentTermも追加されています。
data_cacheシートはどの様になっているのでしょうか?
D列はPayment Methodが12レコード存在し、その下にPayment Termsが12レコード存在します。(レコード数が同じなのは偶然です。)
A列にはエンティティ名、B列にはエンティティのレコードの件数…ではなくD列の「開始位置」が記載されています。ただし、1つ目は「0」で表されます。つまりPayment MethodsはD列のテーブルの0行目(Excel的にはD3セル)から、Payment TermsはD列のテーブルの12行目(Excel的にはD15セル)から記載されています。(3つ目のエンティティを追加して同様に実験するとよくわかります。)
念のため、右の方にスクロールしてデータを確認します。各シートで追加したレコードがいい感じに挿入されていることが分かります。
この仕組みを活用すると、D365BCの初期設定を行う上で必要なテーブルを一つのExcelブックにまとめることができるので、初期設定が簡単に出来そうです。あるいは、仕入先、得意先、銀行…などの主要マスタを含めたExcelをユーザーに渡してユーザー自身で初期データ移行してもらう、といった使い方もできそうです。
1件のコメント