自動保存の管理
公開日: 2017年2月
対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online
自動保存により、ユーザーはフォームのデータを保存を管理する必要がなく、自分の作業に集中できます。 ほとんどのユーザーはレコードを更新するたびにデータを明示的に保存する必要がないことを評価していますが、組織によっては、明示的な保存を予定して設計されたカスタマイズが行われている場合があります。 これらの組織のために、自動保存の方法を管理するオプションがあります。
このトピックの内容
自動保存が機能する仕組み
自動保存を無効にする必要はありますか
組織に対して自動保存を無効にする
フォームの自動保存を無効にする
自動保存が機能する仕組み
既定で、更新されたエンティティ のすべてのメイン フォームでは自動保存が有効になっています。 レコードの作成 (最初の保存) の後、フォームに対する変更は変更の 30 秒後に自動的に保存されます。 フォームの変更がない場合は、フォームが開いている間に自動保存は実行されません。 変更が行われると、自動保存の前の 30 秒期間が再度発生します。 ユーザーを現在編集しているフィールドは自動保存には含まれません。 ユーザーがレコードを編集中に別のだれかが同じレコードを更新した場合は、これらの変更は取り込まれて、自動保存が行われるときにフォームに表示されます。
自動保存が有効になっている状態では、保存ボタンはレコードの最初の保存の場合にのみ表示されます。 レコードが作成された後、コマンド バーに保存ボタンは表示されませんが、未保存の変更が存在するかどうかを示す ボタンを右下隅に表示できます。 このコントロールは、自動保存が無効になっている場合も表示されます。
このボタンをクリックして、レコードを保存し、フォームのデータを迅速に更新することができます。 自動保存が有効になっているときは、レコードから離れるとき、またはレコードを表示している個別のウィンドウを閉じるときはいつでも、レコードは保存されます。 更新されないエンティティのフォームに表示される [保存して閉じる] ボタンは必要ありません。
自動保存を無効にする必要はありますか
レコードの保存時に実行されるプラグイン、ワークフロー、またはフォーム スクリプトがある場合、それらは自動保存が発生するたびに実行されます。 これにより、これらの拡張機能が自動保存と協調して動作するように設計されていない場合、望ましくない動作が発生する可能性があります。 自動保存が有効になっているかどうかにかかわらず、プラグイン、ワークフロー、およびフォーム スクリプトは特定の変更を検出するように設計されていて、各保存イベントに対して区別なく実行されないようにする必要があります。
エンティティに対して監査が構成されている場合は、各保存は個別の更新と同様に扱われます。 誰れかが変更が保存されていないフォームに 30 秒以上とどまっている場合、自動保存が実行された後に彼らがさらなるデータを追加したときにのみ、追加の入力が表示されます。 監査データによって決まるレポートがあり、各保存をレコードの個別の"接触"として扱う場合、接触の頻度の増加が確認されることがあります。 この方法を使用している場合、自動保存が有効または無効であるかにかかわらず、個別のユーザーの振る舞いによってこの方法が信頼できない測定基準となることを考慮する必要があります。
組織に対して自動保存を無効にする
自動保存が現在使用している拡張機能に対して問題を引き起こすと判断した場合は、組織に対する自動保存を無効にすることができます。 個々のエンティティやフォームの自動保存を無効にする設定はありません。
[設定] > [管理] に移動します。
[システムの設定] を選択します。
[すべてのフォームでの自動保存の有効化] オプションについては、[いいえ] を選択します。
フォームの自動保存を無効にする
特定のエンティティ フォームの自動保存を無効にする場合は、エンティティの OnSave イベントにコードを追加できます。
注意
フォームの自動保存は無効になりますが、ユーザーが下右隅の ボタンをクリックすると、データは保存されます。 フォームから移動するかまたはデータが変更されたフォームを閉じる場合、フォームから移動またはフォームを閉じる前に変更の保存を促すプロンプトが表示されます。
ナビゲーション バーで、Microsoft Dynamics 365 > [設定] を選択します。
ナビゲーション バーに [設定] と表示されます。
[設定] > [カスタマイズ] に移動します。
[システムのカスタマイズ] を選択します。
[コンポーネント] で、[エンティティ] を展開し、フォームのエンティティを特定します。
エンティティ ノードを展開し、[フォーム] を選択します。
編集するフォームを開きます。
JavaScript の Web リソースを作成し、フォームに追加する
フォーム エディターの [フォーム] グループで、[フォーム プロパティ] を選択します。
[イベント] タブの [フォーム ライブラリ] で、[追加] を選択します。
[レコードの検索] ダイアログ ボックスで、[新規] を選択します。
Web リソース フォームに、以下の情報を入力します。
名前
preventAutoSave
表示名
自動保存の抑止
種類
スクリプト (JScript)
[タイプ] フィールドの隣の [テキスト エディター] を選択します。
[ソース] フィールドに、次のコードを貼り付けます。
function preventAutoSave(econtext) { var eventArgs = econtext.getEventArgs(); if (eventArgs.getSaveMode() == 70 || eventArgs.getSaveMode() == 2) { eventArgs.preventDefault(); } }
[OK] を選択して、テキスト エディターを閉じます。
[保存] を選択して、Web リソースを保存し、次に Web リソース ウィンドウを閉じます。
[レコードの検索] ダイアログで、作成した新しい Web リソースが選択されます。[追加] を選択して、ダイアログを閉じます。
OnSave イベントの構成
[フォーム プロパティ] ウィンドウの [イベント ハンドラー] セクションで、[イベント] を [OnSave] に設定します。
[追加] をクリックします。
[ハンドラーのプロパティ] ウィンドウで、[ライブラリ] を前の手順で追加した Web リソースに設定します。
関数 フィールドに「preventAutoSave」を入力します。 大文字と小文字は区別されます。 引用符は含めません。
[有効] がオンになっていることを確認します。
[実行コンテキストを最初のパラメーターとして渡す] をオンにします。
重要
これを行わない場合、スクリプトは機能しません。
[ハンドラーのプロパティ] ダイアログはこのようにする必要があります。 カスタマイズの接頭辞: "new_"は、組織の既定の発行者に対して設定されるカスタマイズ接頭辞に基づいて変化する場合があります。
[OK] をクリックして [ハンドラーのプロパティ] ダイアログを閉じます。
OnSave イベントに対する他のイベント ハンドラーが存在する場合は、緑色の矢印を使用して、これを最上位に移動します。
[OK] をクリックして、[フォームのプロパティ] ダイアログを閉じます。
保存して閉じる をクリックしてフォームを閉じます。
ソリューション エクスプローラーで、[すべてのカスタマイズの公開] をクリックします。
OnSave イベントにこのスクリプトを追加した後、他のユーザーがこのフォームを使用してレコードを編集するとき、自動保存が無効になっていた場合と同じように、メッセージ [変更が保存されていません] がフォームの右下隅に表示されます。 ただし、このメッセージは、ユーザーがその横にある ボタンをクリックするまで消えません。
関連項目
フォームの作成および設計
フォーム エディターの使用
メイン フォームに関する設計考慮事項
メイン フォームの表示
フォームのパフォーマンスの最適化
フォームの更新
© 2017 Microsoft. All rights reserved. 著作権