3

フォームで、[オプション セット] フィールドの [決定] の値が [却下] に選択されている場合、[却下の理由] を [必須] に設定します。フィールド Decision の OnChange に関連付けられる JS 関数を作成し、Reject Reason フィールドを Required に設定しました。

if (decisionOptionSetValue == 100000006 && decisionOptionSetText == "Reject") {
    Xrm.Page.getAttribute("new_rejectionreason").setRequiredLevel("required");
}

これで、上記は問題なく正常に機能しました。

問題は、同じレコードを開いた場合、Reject Reason フィールド (new_rejectionreason) から値を喜んで削除でき、エラーをスローしないことです。なぜなら、私のコードは、Decision オプション セットの値の変更が設定されている場合にのみ起動するからです。 、この場合は発生していません。

では、これらを防ぐためにどこをチェックすればよいでしょうか。

オプション 1 : new_rejectionreason フィールドに OnChange を設定して、値が変更されたかどうかを確認できますか?

オプション 2 : フォームを保存する前に OnSave の一部としてチェックを行い、フォームが保存されないようにし (?)、このフィールドを必須として設定しますか?

オプション 3 : チェックを OnLoad として実行し、フィールド new_rejectionreason を Required に設定しますか

他のオプションはありますか?

4

3 に答える 3

3

ユーザーに値を設定させたくない場合は、そのフィールドを読み取り専用にしないでください。したがって、決定フィールドの値を変更する場合は、次を追加します。

Xrm.Page.ui.controls.get('new_rejectionreason').setDisabled(true);

そのため、ユーザーは決定フィールドを再度変更せずに値を編集することはできません。

編集:あなたのコメントに基づいて理解したと思います。最も簡単なのは、負荷に追加のチェックを追加することだと思います。

function OnLoad() {
    var decisionValue = Xrm.Page.getAttribute('new_decision').getValue();
    if (decisionValue !== null) {
        Xrm.Page.getAttribute('new_rejectionreason').setRequiredLevel('required');
    }
}

したがって、ページが読み込まれると、Decisionフィールドがチェックされます。値が見つかった場合、Reject Reasonフィールドが必須であることを認識し、そのようにマークします。

Decision次に必要なのは、値が削除された場合に必要な値を設定解除するために OnChange ハンドラーを変更することだけです。

if (decisionOptionSetValue === 100000006 && decisionOptionSetText === 'Reject') {
    Xrm.Page.getAttribute('new_rejectionreason').setRequiredLevel('required');
}
else {
    Xrm.Page.getAttribute("new_rejectionreason").setRequiredLevel('none');
}
于 2013-03-13T16:03:29.987 に答える
3

私の意見では、最良の選択はオプション 3 です。フィールド new_rejectionreason が必要であることをユーザーに警告し、保存フォームがそれを警告するのを待たないためです。オプション 1 では、new_rejectionreason で onchange を強制する必要があります。この方法は、後で onchange を強制する理由を理解するのが簡単ではありません。

私が推奨しない別のオプションは、プラグインでこの検証を行い、プラグインの実行を停止してユーザーにメッセージを送信する InvalidPluginExecutionException を起動する別の方法です。これは情報提供のみを目的としており、このケースではこのメソッドを使用しないでください。

于 2013-03-13T15:45:13.390 に答える
0

ステータスが拒否に設定されているが理由が空であるという条件の下で、エンティティの保存を単に防止します。どういうわけか、別のフィールドの値に応じて、フィールドをビジネス必須にするかどうかを設定することに不安を感じます。

于 2013-03-13T20:08:00.210 に答える