トピックス

知識創造研究室 by CRM(xRM)

D365カスタマイズの壁と突破法:ohyaの実践記【#004】〜フォームを開いたら“今日の日付”が自動で入ってる!? JavaScriptでスマート解決〜

こんにちは、ohyaです。

今回は、**Dynamics 365で「フォームを開いたときに今日の日付を自動入力する方法」**をご紹介します。

「え、それくらい簡単でしょ?」と思ったあなた。
実はこれ、Power Automateやビジネスルールではできないんです…!

一見シンプルな要件に見えますが、実は意外と奥が深い…!

🛠️今回の壁『フォームを開いた瞬間に“今日”を入れたい!』

営業活動の記録用に「コンタクト履歴」テーブルを作成しました。
その中にある「コンタクト日」フィールドには、フォームを開いた時点で“今日の日付”が自動で入っていてほしいという要望がありました。

でも、ここで問題が発生…!よくある方法では要求を達成できませんでした。

❌よくある方法ではダメだった理由

    • ビジネスルール → 「今日の日付」を設定する機能がない
    • Power Automate → 「保存されたとき」にしか動かない
    • フォームを開いた瞬間にはまだレコードが作成されていないので、Power Automateは反応しない!

つまり、「フォームを開いた瞬間に入力する」には、別のアプローチが必要だったんです。

✅ 解決策:JavaScriptでリアルタイム入力!

そこで今回は、JavaScriptを使ってフォーム表示時に“今日の日付”を自動入力する方法を採用しました。

1. JavaScript Webリソースを作成

まずは、以下のようなコードを含む .js ファイルを作成します:

function setTodayDate(executionContext) {
    // フォームのコンテキストを取得
    var formContext = executionContext.getFormContext();
    // 今日の日付を取得
    var today = new Date();
    // コンタクト履歴のエントリ日付フィールドを取得
    var contactDateField = formContext.getAttribute("acsj_contact_history_entry_date");
    // エントリ日付フィールドが空の場合
    if (contactDateField.getValue() === null) {
        // 今日の日付をエントリ日付フィールドに設定
        contactDateField.setValue(today);
    }
}

2. Webリソースをフォームに追加

  1. フォームエディターを開く
  2. 「フォームライブラリ」に上記のJSファイルを追加
  3. 「フォームロード」イベントに setTodayDate 関数を登録
  4. executionContext を渡す設定を忘れずに!

3. 動作確認

フォームを開いた瞬間に、「コンタクト日」フィールドに今日の日付が自動入力されるようになります!

✅ まとめ

  • ビジネスルールやPower Automateでは実現できない要件も、JavaScriptで解決可能!
  • 「フォームを開いたときに値を設定する」には、フォームイベント+JavaScriptが有効
  • 小さな工夫で、ユーザーの手間やミスを減らせるのがカスタマイズの醍醐味!

✍️ 終わりに

「ちょっとした自動入力」でも、ユーザーにとっては大きな助けになります。
今回のように、JavaScriptを使ったリアルタイムな入力補助は、D365のカスタマイズの幅をぐっと広げてくれます。

次回も、実際に手を動かして得た知見をシェアしていきますので、お楽しみに!

この記事を書いた人
ohya

はじめまして! 2025年3月にIT業界に飛び込んだ、まだまだ勉強中の新人です。 プログラミングもITもまったくの未経験からのスタートですが、 「日々勉強・日々成長・日々感謝」を大切にしながら、毎日コツコツ頑張っています。 わからないことだらけですが、その分、学ぶ楽しさもたくさん! 少しずつでも前に進んで、誰かの役に立てるエンジニアを目指しています。 どうぞよろしくお願いします!

同じカテゴリの記事

Translate »