Dynamics 365 for Sales取引先企業エンティティに郵便番号から住所検索を実装する

目次

Dynamics 365 for Sales取引先企業エンティティに郵便番号から住所検索を実装する

グローバル製品なので、郵便番号から住所検索は実装されていません。
なので、今回取引先企業エンティティにて、郵便番号を入力したら自動的に住所を表示させる機能を追加してみます
Dynamics365を初めてまだ2週間もたっていないので間違っているところがあってら指摘してもらえると嬉しいです!

この記事ではzipcloudさんを利用させてもらい実装しています

メインフォームのフィールドを変更する

  1.  Dynamics365のアプリを何か開きます(営業ハブとか)
  2. 歯車アイコン→【詳細設定】をクリックします
    (次の画面に遷移するまでちょっと時間かかります・・・)
  3. 「設定」→【カスタマイズ】をクリックします
  4. 【システムのカスタマイズ】をクリックします
  5. この画面が表示されますが、まだ遷移できない画面がある(?)ようなので【キャンセル】をクリックして、
    クラシック表示のまま利用します。
  6. 「エンティティ」を展開し、【取引先企業】を選択します
    「フォーム」→【取引先企業】をクリックします
  7. フィールドエクスプローラーから「住所1:郵便番号」を住所欄にドラッグ&ドロップします
  8. これを複数回繰り返し、下記の状態にします
  9. 【保存】をクリックしたあと、【公開】をクリックします
  10. 取引先企業フォームを開き、変更したフィールドが反映されているかを確認します

スクリプトファイルを用意する

下記のようなスクリプトを用意します。
エラー処理が何もないのと、複数結果があったとしても最初の1件を表示させますが、そのあたりはお好みで修正してください
(というより誰かもっといいもの作ってファイルください(笑))
Xrm.Pageは廃止予定とのことなので、executionContextを利用しています

function onChangeZipcode(executionContext) {
    var formContext = executionContext.getFormContext();
    var zipcode = formContext.getAttribute("address1_postalcode").getValue();

    $.ajax({
        url:"https://zipcloud.ibsnet.co.jp/api/search?&callback=?",
        type:"GET",
        data:{zipcode : zipcode},
        dataType:"json",
        async:false,
        crossDomain:true,
        success:function(data){
            pref = data.results[0].address1;
            city = data.results[0].address2;
            line1 = data.results[0].address3;
            formContext.getAttribute("address1_stateorprovince").setValue(pref);
    formContext.getAttribute("address1_city").setValue(city);
    formContext.getAttribute("address1_line1").setValue(line1);
        }
    })

}

スクリプトファイルをフォームに追加する

  1. jQueryをダウンロードしてきます
  2. 上記と同じように「システムカのスタマイズ」から取引先企業エンティティを開き、取引先企業フォームを開きます
  3. 【フォームのプロパティ】をクリックします
  4. 「フォームライブラリ」の【追加】をクリックします
  5. 【新規】をクリックします
  6. 下記のように設定し、【上書き保存】をクリックします
    名前 わかりやすい名前(jQuery等)
    コンテンツ
    種類 スクリプト(JScript)
    言語 日本語
    ファイルのアップロード ダウンロードしたJQueryファイルを選択

  7. 【公開】をクリックします
  8. 【追加】をクリックします
  9. 追加されたことを確認し、【OK】をクリックします
  10. 同様の手順で事前に作成した、スクリプトファイルも追加します
  11. 以下の図のようになったことを確認します

郵便番号が入力されたらスクリプトが実行されるようにする

  1. フォームのカスタマイズ画面から、「住所1:郵便番号」フィールドをダブルクリックします
  2. 「イベント」タブをクリックします
  3. イベントが「OnChange」になっていることを確認し、【追加】をクリックします
  4. 「依存関係」タブをクリックします
    このスクリプトが必要とするフィールドを依存フィールドへ登録します
  5. 「詳細」タブをクリックし、ライブラリから作成したスクリプトファイルを選択します
  6. 関数に「onChangeZipcode」と入力します
  7. パラメータ項目にある、「実行コンテキストを最初のパラメーターとして渡す」にチェックを入れ、【OK】をクリックします
  8. フィールドのプロパティダイアログを【OK】をクリックし閉じます
  9. 【保存】をクリックした後、【公開】をクリックします

取引先企業フォームで郵便番号入力しテストする

取引先企業フォームの住所1:郵便番号欄に郵便番号を入力し、タブキーで移動します。
番地までのフィールドに値が自動的に入ることを確認します

 

まだまだ慣れないですが、色々とDynamics365についてもアウトプットできればいいなと思います
こういう簡単なやり方すら迷うので、そういうすぐ使えるTips的なものを多く書いていきたいと思います!

 

 

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次