2017-04-03 5 views
1

カスタムエンティティのフォームにカスタムボタンを追加しました。クリックするとレコードが複製され、新しく作成されたレコードが新しいウィンドウに開きます。新しく作成されたレコードのFormTypeupdateです。CRM2015:フォームが初めて更新されたときにフィールドを検証する

開いているウィンドウで、保存ボタンがクリックされたかどうかを知る必要があります。クリックされていない限り、いくつかのフィールドは編集のために開いていなければなりません。クリックされると、これらのフィールドは無効になります。

現在、レコードが重複していて、その初期値がtrueに設定されているかどうかを示す(非表示の)ビットフィールドがあります。私のonSave関数の保存ボタンの最初のクリックで、私はそれをfalseに設定しました。さらに、私はonLoad関数がこのフィールドを真(レコードが複製されたときにのみ起こるかもしれない)かfalseにチェックする機能を持っています。

私の問題は論理的なものです。最初の保存クリックでこのフィールドをfalseに設定するには、実際にsaveボタンをクリックするたびに検証を行う必要があります(重複しないレコードでも同じです)。

私は誰かが他の、より論理的に正しい方法を提供できると思ったかもしれません。そう、あなたはすべてのフォームの修正をした後、あなたのOnLoad関数に

Xrm.Page.getAttribute("sln_isduplicate").setValue(false); 

function OnLoad() 
{ 
    // some code... 
    if (Xrm.Page.getAttribute("sln_isduplicate").getValue() == true) 
    { 
     // open for edit relevant fields 
    } 
    else 
    { 
     // close for edit relevant fields 
    } 
    // some code... 
} 

function OnSave() 
{ 
    // some code... 
    if (Xrm.Page.getAttribute("sln_isduplicate").getValue() == true) 
    { 
     Xrm.Page.getAttribute("sln_isduplicate").setValue(false); 
    } 
    // some code... 
} 

答えて

1

は、単にこれを呼び出します。ここでは

は、関連するスニペットです

function OnLoad() 
{ 
    // some code... 
    if (Xrm.Page.getAttribute("sln_isduplicate").getValue() == true) 
    { 
     // open for edit relevant fields 
    } 
    else 
    { 
     // close for edit relevant fields 
    } 

    Xrm.Page.getAttribute("sln_isduplicate").setValue(false); 
} 

重複しているかどうかは関係ありません。レコードを保存するときに、このフラグをfalseに設定する必要があります。

他のアプローチは、onsaveイベントを動的に追加することです(これは、フォームレベルで追加したと仮定しているためです)。基本的には次のようになります:

if (Xrm.Page.getAttribute("sln_isduplicate").getValue() == true) 
{ 
    // open for edit relevant fields 
    Xrm.Page.data.entity.addOnSave(OnSave); 
} 
else 
{ 
    // close for edit relevant fields 
} 

このアプローチでは、OnSave関数が重複するレコードに対してのみ追加されます。

しかし、私はカスタムフィールドを使用せず、いくつかのクエリ文字列パラメータを渡して、これが重複していることを示します。

Xrm.Utility.openEntityForm("entityname","A85C0252-DF8B-E111-997C-00155D8A8410"); 

をしかし、あなたは、この機能のためにdocumentationをチェックするとき、あなたはそれがあなたのためのより多くの有用なオプションがあることを確認できます:あなたはおそらくそのようなあなたの新しく作成されたレコードを開いている

Xrm.Utility.openEntityForm(name,id,parameters,windowOptions) 

パラメータをすることができますデフォルトのフィールドIDまたはいくつかの完全カスタム値(ただし、あなたはconfigure thatでなければなりません)

もちろん明らかな解決策は次のようなものです:いくつかのカスタムクエリ文字列パラメータを持つ重複レコードをonload関数cそのパラメータがあれば、それがあれば、単に特定のロジックを実行してください。

+0

解決策2と3は私が探していたものです。ありがとうございます! – HeyJude

関連する問題