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リソースをフォームに追加
- フォームエディターを開く
- 「フォームライブラリ」に上記のJSファイルを追加
- 「フォームロード」イベントに
setTodayDate
関数を登録 executionContext
を渡す設定を忘れずに!
3. 動作確認
フォームを開いた瞬間に、「コンタクト日」フィールドに今日の日付が自動入力されるようになります!
✅ まとめ
- ビジネスルールやPower Automateでは実現できない要件も、JavaScriptで解決可能!
- 「フォームを開いたときに値を設定する」には、フォームイベント+JavaScriptが有効
- 小さな工夫で、ユーザーの手間やミスを減らせるのがカスタマイズの醍醐味!
✍️ 終わりに
「ちょっとした自動入力」でも、ユーザーにとっては大きな助けになります。
今回のように、JavaScriptを使ったリアルタイムな入力補助は、D365のカスタマイズの幅をぐっと広げてくれます。
次回も、実際に手を動かして得た知見をシェアしていきますので、お楽しみに!
この記事を書いた人
Translate »