2

CRM 2011エンティティフォームのカスタムリボンボタンをクリックすると、外部リンクを呼び出すJavascriptを作成しています。 JavaScriptでフォームが汚れているかどうかチェックしています。フォームが汚れている場合(ユーザーによっていくつかのフィールドが変更されたことを意味します)、JScriptはXrm.Page.data.entity.save()を使用して強制的にフォームを保存します。しかし、強制フィールドが満たされていない場合、強制保存は行われず、これらのフィールドを埋めるためのカスタムメッセージを表示し、制御の流れを終了させ、外部リンクを開くべきではありません。フォームが保存されているかどうかを取得する方法..以下のようにコードのフォームが保存されていることを確認してください。CRM 2011 Javascript

ワンピース:

function buttonOnClick() { 
    if (Xrm.Page.data.entity.getIsDirty()) 
    { 
     Xrm.Page.data.entity.save(); 
    } 
    else 
    { 
     window.open('http://www.google.com', 'name', 'width=900,height=800'); 
    } 
} 
+0

これを試しましたか?私はCRMがあなたのためにそれを行い、完了していない必須フィールドに関する標準エラーを表示して、保存を防止すると思います。 – glosrob

+0

はい、警告メッセージを表示しますが、実行を終了しません。フォームが保存されていないことがわかると、手動で実行を終了できます。 –

+0

私は必要なフィールドを無視して、とにかくそれを保存することに驚いています - これは、dbの整合性を破るだろうか?彼らは間違いなく「必須」であり、「推奨」されていませんか? – glosrob

答えて

3

「フォームが保存されました」と言うと、初めてのことですか?その場合は、フォームタイプを照会することができます。 -

Xrm.Page.ui.getFormType(); 

(例:作成または更新)フォームがすでに更新モードになっている場合は、フォームが汚れているかどうかを確認することができます。あなたは、必須フィールドが完成されていないかを知りたい場合はすることもできます、彼らはビジネスに必要であるかどうか、フォームやクエリの属性を超える潜在的にループ: -

Xrm.Page.data.entity.attributes.get("myAttribute").getRequiredLevel(); 

との警告メッセージにこれを追加ユーザー。

+0

これは新しいレコードを作成するのに最適です。更新のための解決策は何ですか? –

+0

フォームが既に更新モードになっている場合、フォームが汚れているかどうかを確認できます。>フィールドが変更されたかどうかを知ることができます。上記のコードを使用して必須のすべてのフィールドを検索し、それらのフィールドに値があることを確認できます。もしそうでなければ、これを完了する必要があるよりも、ユーザに警告する警告メッセージにフィールド名を追加することができますか?他のユーザーがコメントしたように、基本的にはOOTBの機能を改革していますが、標準的なイベントが防止されていると言っても問題はありません。 –

+0

次に、それぞれのフィールドの必要レベルとそれに含まれる値をチェックする必要がありますか?その場合、私は多くのフィールドと多くのフォームを持っています。 フォーム上のすべてのフィールドを取得するプロパティはありますか? –

0

あなたがフィールドを検証し、それらが有効であるかどうかに基づいて値を返すために、独自のOnSaveメソッドを追加することができます。

明示的に保存したフォームを教えてくれませんが、あなたは十分に近いかであってもなくてもよい、フォームが有効であるかどうかを知ることができます

Xrm.Page.data.entity.addOnSave(function() { 
    var isValid = VerifyOnSave(); 
    if (isValid) { 
     //continue 
    } 
    else { 
     //show errors, cancel save 
    } 
); 

function VerifyOnSave() 
{ 
    //<insert validation logic here> 
    return true; 
} 

関連する問題