none
定期的な予定の作成について RRS feed

  • 質問

  • お世話になります。

    カスタムエンティティで定期的な予定を作成する方法についてご教授お願いします。

    想定処理として、
    予定情報(カスタムエンティティ)を作成して、
    顧客情報(カスタムエンティティ)に1:Nで関連付けして、
    顧客単位に予定情報を作成して、
    顧客情報フォーム画面にサブグリッドを設置してカレンダーコントロールで表示させることを検討しています。

    1回のみの予定は問題ないのですが、定期的な予定(毎週水曜日等)を登録する場合、
    個別に1つずつ予定情報を作成する必要があり、
    変更等が生じた場合は、1レコード毎に修正する必要があります。

    予定(標準エンティティ)の「定期的なアイテムの設定」のような方法で
    作成や設定などは出来るのでしょうか。
    2020年4月15日 6:42

回答

  • こんにちは。

    結論から申し上げると予定エンティティを利用されるのが一番いいかと思いますが、カスタムエンティティで実装したいということであれば、私ならWebAPIを利用して以下の様な処理を実装すると思います。ただし、思いついたことをそのまま書いているだけなので、実装される場合は細かい調整が必要になるかと思いますが。

    [事前準備]
    予定情報エンティティに以下の項目を作成
    ①項目名:予定種別  データ型:オプションセット(1回のみ/1週間毎)
    ②項目名:開始日    データ型:日付のみ
    ③項目名:終了日    データ型:日付のみ
    ④項目名:親の予定   データ型:検索(予定エンティティを指定)※画面非表示
    ⑤項目名:予定日時  データ型:日付と時間

    [新規作成]
    OnSave時、予定の種類が"1週間毎"かつ開始日と終了日が設定されていれば以下を実施
    ・Xrm.WebApi.createRecordで予定情報レコードを複数作成
     予定の種類 ← "1週間毎"
     親の予定 ← {新規作成したレコード}★ここがポイント
     開始日 ← {上記レコードの開始日}
     終了日 ← {上記レコードの終了日}
     予定日時 ← ループ毎に+7日の日付を設定
    ・上記のレコード作成処理をfor文で複数回実行
     for文の終了条件:予定日時 > 終了日
    ※終了日が指定されていないと無限ループするので注意
    ※親の予定に自身を設定するためには一度保存処理が必要かもしれません
     (OnSave前だとまだGUIDが払い出されていない為)

    [更新]
    OnSave時、予定の種類が"1週間毎"であれば以下を実施
    ・Xrm.WebApi.updateRecordで予定情報レコードを更新
     更新対象:親の予定に設定されている予定情報を同じ親として持つ全てのレコード

    [削除]
    OnSave時、予定の種類が"1週間毎"であれば以下を実施
    ・Xrm.WebApi.deleteRecordで予定情報レコードを削除
     削除対象:親の予定に設定されている予定情報を同じ親として持つ全てのレコード

    ★検索フィールドには自エンティティも指定できるので、1週間毎の予定情報から派生して作成された予定情報に自身のID情報を持たせてあげることで、同エンティティのレコード間で横のつながりを持たせてあげるようにし、更新・削除時にそのID情報を利用します。
    • 編集済み westcoastline 2020年4月17日 1:44
    • 回答としてマーク rias.crm 2020年4月19日 23:45
    2020年4月17日 1:32

すべての返信

  • こんにちは。

    結論から申し上げると予定エンティティを利用されるのが一番いいかと思いますが、カスタムエンティティで実装したいということであれば、私ならWebAPIを利用して以下の様な処理を実装すると思います。ただし、思いついたことをそのまま書いているだけなので、実装される場合は細かい調整が必要になるかと思いますが。

    [事前準備]
    予定情報エンティティに以下の項目を作成
    ①項目名:予定種別  データ型:オプションセット(1回のみ/1週間毎)
    ②項目名:開始日    データ型:日付のみ
    ③項目名:終了日    データ型:日付のみ
    ④項目名:親の予定   データ型:検索(予定エンティティを指定)※画面非表示
    ⑤項目名:予定日時  データ型:日付と時間

    [新規作成]
    OnSave時、予定の種類が"1週間毎"かつ開始日と終了日が設定されていれば以下を実施
    ・Xrm.WebApi.createRecordで予定情報レコードを複数作成
     予定の種類 ← "1週間毎"
     親の予定 ← {新規作成したレコード}★ここがポイント
     開始日 ← {上記レコードの開始日}
     終了日 ← {上記レコードの終了日}
     予定日時 ← ループ毎に+7日の日付を設定
    ・上記のレコード作成処理をfor文で複数回実行
     for文の終了条件:予定日時 > 終了日
    ※終了日が指定されていないと無限ループするので注意
    ※親の予定に自身を設定するためには一度保存処理が必要かもしれません
     (OnSave前だとまだGUIDが払い出されていない為)

    [更新]
    OnSave時、予定の種類が"1週間毎"であれば以下を実施
    ・Xrm.WebApi.updateRecordで予定情報レコードを更新
     更新対象:親の予定に設定されている予定情報を同じ親として持つ全てのレコード

    [削除]
    OnSave時、予定の種類が"1週間毎"であれば以下を実施
    ・Xrm.WebApi.deleteRecordで予定情報レコードを削除
     削除対象:親の予定に設定されている予定情報を同じ親として持つ全てのレコード

    ★検索フィールドには自エンティティも指定できるので、1週間毎の予定情報から派生して作成された予定情報に自身のID情報を持たせてあげることで、同エンティティのレコード間で横のつながりを持たせてあげるようにし、更新・削除時にそのID情報を利用します。
    • 編集済み westcoastline 2020年4月17日 1:44
    • 回答としてマーク rias.crm 2020年4月19日 23:45
    2020年4月17日 1:32
  • westcoastline 様

    詳細な説明ありがとうございます。
    教えて頂きました方法で検証して実装予定です。
    2020年4月19日 23:45