D365BCのデータをExcelから更新する(1)


仕事でD365BCのEdit in Excel を色々といじったので少し整理してみます。

Edit in Excel はExcelからBCのデータを更新できる機能です。うまく使うとデータ移行から日常運用のマスタメンテナンスまで、生産性を劇的に向上できるツールです。

 

まずはDynamics365ポータルからD365BCにサインイン。 

Edit in Excelを実験するマスタとして今回は「Payment Method(決済方法)」を使います。
(他のマスタでも構いませんが、項目数が手ごろなのでこのマスタを使います。)
虫眼鏡アイコンから検索ワードを入力してPayment Methodを選択。
(余談ですが、いつの間にか電球アイコンから虫眼鏡アイコンに戻りましたね。。)

Payment Methodの一覧画面です。決済方法として銀行(Bank)とか現金(Cash)などが存在するのが分かります。メニューの「Page」から「Edit in Excel」をクリック。

ファイルを保存します。(保存せずに開くでもExcelからの編集はできますが、後々再利用できるので保存しておく方がベターです。)

保管場所を適当に作ってファイルを保存。

保存したExcelを開きます。

最初の状態ではデータは表示されていません。これは、この時点で認証が通っていないからです。「編集を有効にする。」を選択。

初回のみ、アドインのインストール処理が必要です。「アドインを信頼」を選択。

アドインのインストール(信頼)が終わると以下の画面になります。右側にアドインの情報が表示されています。少し寄り道して歯車アイコンを押してみます。

サーバーのサーバーのURLとか、言語設定が確認できます。キャンセルボタンで戻ります。

サインインボタンを押してサインインします。

IDとパスワードを入力してサインイン。

エラーが出た場合はExcelを一旦閉じて最初からやり直すとよいです。

サインインすると色々と処理が走ります。右側のアドインのボックスの下の方に表示されます。

アドインのアプレットが読み込まれているようです。

メタデータを取得しているようです。

データが表示されました。

では実際にExcelで編集してD365BCを更新してみましょう。まずはデータの更新から。
既存コードの説明文言(Descripition)を変更します。そして「公開」ボタンを押します。(更新、ではないことに注意です。更新だと、BCのデータをExcelに反映することになります。(向きが逆です。)

更新が成功しました。

BCに反映されたか見てみましょう。反映されていますね。

次にデータを新規追加してみます。Excel上で新規コード(今回は「BANK2」にします)を追加し、Excelアドインの「公開」をクリック。

BCを見てみましょう。反映されていない、、?こういうときは「F5」ボタンを押します。一見ブラウザのリロードですが、単にBCのリストをリロードしてくれます。

追加されていることが確認できました。

次は削除です。今しがた追加したコードをExcel上で削除し、公開ます。(行選択して削除)

本当に削除してよいか確認する警告メッセージが出ますので、「はい」を選択して公開。
(更新のみの場合は出ないくせに、削除の場合だと削除と更新を聞いてくるのは謎。。)

BCに戻って確認します。削除されていることが分かります。

エラーはどのように表示されるでしょうか?
新規追加でわざとキー重複を起こしてみます。既存のコードと同じ文字列(今回はMULTIPLE)を追加して「公開」

重複のエラーが表示されます。

別のエラーも見てみます。許容されていない値を入れた場合。
B列はTrueかFalseの2択ですが、それ以外の値を入れて公開してみます。

エラーが表示されました。ご丁寧にハイライトされています。エラーの詳細情報があるようなので、「メッセージセンターを開く」をクリック。

許容されない値が入力された旨が表示されています。

メッセージに「行12へ移動」とありますのでクリックしてみると、該当のエラー行に飛びます。
データのクレンジングが捗りますね。

メッセージセンターの「エラーのみ」フラグをOFFにしてみると、成功した処理も表示れます。最初のユーザー認証処理も記録されています。

Excelの編集時に注意すべきこととして、Excelのテーブルを使っていることを意識してください。
たとえば、行コピーして行貼り付けして新規行を作成した場合、認識されないことがあります。

本来はキー重複エラーになはずですが、「公開」ボタンを押してもエラーになりません。

Excelでテーブル選択のプルダウンを表示し「AxTableXX」を選択すると、最終行が範囲外になっていることが分かります。テーブルに含まれていないので、そもそも更新対象にならず、エラーにならなかった、という理屈です。

ひとしきりExcelでデータ更新しつつ、BCに戻るとセッションタイムアウトで接続が切れていましたw
逆にいうとBCのセッションが切れてもExcelから更新可能ということです。つまり、Excel自体がBCのサーバー(というかサービス)に接続してユーザー認証も通したうえで更新している、ということの証明でもあります。

3件のコメント

返信を残す

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