D365BCとD365Salesとの連携(7)


前回はCurrency(通貨)についてBCとSales(≒Dataverse)のデータを確認し、まだ紐づけられていないことを確認しました。今回は紐づけ処理(Coupling)を行います。

前回、Sales側のデータを確認する直前に見ていたBCの画面です。データを見る限り、この一覧はSalesのデータなのですが、実体はSalesでしょうか?BCでしょうか?
Ctrl + Alt + F1 を押すと画面右側にテーブル番号やページ番号を表示します。Table番号はメモしておきましょう。

Page番号をURLに直接入力してテーブルの一覧データを照会します。URLに含まれているCompany名の後ろに’&page=358’を挿入すればOKです。これでBCのテーブルの一覧を紹介できます。

下にスクロールして先ほどメモしたTable番号を探します。「5345:Dataverse Transactioncurrency」というテーブルです。名称がDataverseのテーブル名と異なりますし、BCのテーブル一覧に存在するので、’Dataverse Transactioncurrency ’ の実体はBCのテーブルです。

テーブルの項目も見てみましょう。URLのCompany名の後に’&Page=9806’を追加するとテーブル項目一覧が見れます。フィルタ条件で ’Table No.= 5345’を指定すると ’5345:Dataverse Transactioncurrency’ の項目一覧を見ることが出来ます。このなかにTransaction Currencyという項目が存在します。

前回確認した、Integration Table Mappings を新ためて見てみましょう。項目’Integration Table’と’Integration Field’列を見てください。これらの項目には上の画面に出てきたテーブル名と項目名が表示されていることが分かります。

さて、ここで少し話が脇道にそれますが、Currency の IntegrationTable である Dataverse Transactioncurrency テーブルについて掘り下げてみます。そもそもこのテーブルがBCのテーブルであり、SalesのCurrencyデータを格納できるのであれば、そのまま使うか最初からCurrencyテーブルにデータを格納すればよいはずです。DataverseTransactioncurrencyテーブルを構成パッケージからをダウンロードできないか試すとこの疑問の答えが見えてきます。

構成パッケージはデータの初期移行ツールです。(構成パッケージの使い方はここでは詳しく説明しません。)まずは構成パッケージを新規作成します。

ヘッダーの名前などは適当につけます。明細でテーブルを指定します。

5345:Dataverse Transactioncurrencyテーブルを指定します。

TableIDに5345がセットされました。ここでタブを押すなり、別の行に移るなりしてロストフォーカスします。

するとこのようなエラーが表示されます。テーブルのタイプがCRMなのでNGだ、と言われます。試すと分かりますが、他のIntegrationTableについても同様のエラーが表示されます。つまり、Dataverse TransactioncurrencyのようなIntegration TableはBCの普通のテーブルとはデータの持ち方が違っており、そのままではBCの中では使えないという事だと思われます。したがってIntegrationTableはあくまで中間テーブルとして存在し、CurrencyのようなBCのテーブルへのマッピングと同期が必要になるのだと思われます。

さて、話を元に戻して紐づけ(Coupling)の処理を続けます。この画面に戻ります。右側のPage Inspectionはxをクリックして閉じて構いません。CADを選択してOKを押します。

’Dataverse’にCADがセットされます。そしてOKをクリックします。

Synchronizeのジョブが起動した、とメッセージが表示されます。Synchronize Logを見てみましょう。

1件Modifyされたことが分かります。左上のCurrencyの横の<- ボタンをクリックして戻ります。

ここでCouplingを選択するとDelete Couplingという選択肢が出てきています。これは現在Coupulingが出来ていることを示しています。

CoupuleされたSales(Dataverse)側のレコードを見るにはTransactioncurrencyを選択します。

ユーザー認証が走ったら通して…

Sales側(Dataverse側)のCurrencyが表示されました。これで紐づけが完了したことが確認できました。Exchange Rate(為替レート)に1.5023948173と設定されています。

紐づけが完了したので、BC側の設定を変更して同期処理を実行したらSales側に反映されることを確認してみましょう。BCのCADのカード画面でAction->Exch. Rateをクリックします。

すると為替レートの画面が表示されます。一見すると先ほど表示されたSalesの通貨レートと異なるように見えますが、、

分子分母が逆になっているだけで、100/66.5604を計算するとSalesの画面で見たレートと一致することが分かります。

レートを変更してみましょう。BC側で76.5604に変更してみます。

その後、同期処理を実行します。

Sales側の画面でRefreshを実行するとExch. Rateが変更されました。

改めて電卓で計算すると、正しい値が設定されたことが分かります。

変更した通貨レートは戻しておきましょう。(こういう積み重ねがデータベースを汚くするので。。)

Currencyというマイナーなテーブルを例にとりましたが、BCのテーブルとSales(Dataverse)のテーブル、そしてその中間に存在するIntegrationTableの繋がり、そしてデータの同期タイミングが理解できたかと思います。ちなみに、今回の手順ではCAD(カナダドル)だけCoupulingしているので、他の2通貨についても自分で試してみてください。(Sales連携を設定せずにDataverse連携のみを設定すると、1通貨をSynchronizeするだけで他の通貨も道連れでSynchronizeされる気がします。理由は…分かりません。)

返信を残す

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