2017-09-13 16 views
2

私は2つのフォームを含むエンティティを持っています.2つのオプションフィールドの値に基づいてこれら2つのフォームの間のナビゲートを防止したいと思います。言い換えれば、必要な予備検査の価値が「はい」の場合、ナビゲーションは不可能で逆の場合はどうしたらよいですか?フォームの頭にフォームタブを隠すcrm dynamics 365

リストを非表示にすることはできますか?

おかげで、

enter image description here

+0

フォームはデータではなくセキュリティロールに依存するため、そうではありません。要件を修正する必要があります。 – Alex

+0

このリストを非表示にすることもできません。 @Alex – Marwan

+1

いいえ、サポートされている方法ではできません。 –

答えて

2

はありません、あなたは動的にユーザーが選択できるフォームを変更することはできません。これはセキュリティロールに基づいて静的にしか実行できません。

代わりに、処理が必要なフィールドの値に基づいて、該当するフィールド/セクション/タブを非表示にして表示する単一のフォームを使用することをおすすめします。

+0

Diligenceをクリックすると、ユーザーは常にpre-scoringという形式にリダイレクトできますか? @Henrik H – Marwan

+0

プログラムでフォームを変更できます。私はそれに反対することをお勧めします。私が個人的に保守しやすいものを表示/非表示する単一フォームで使用してください(この方法で、ユースケース全体の要素を簡単に再利用できます) –

0

あなたのプロジェクトの複雑さに基づいて、フォームコントロール/タブ/セクションの数を決定することができます。我々はフォーム制御値に基づいて&強制的なナビゲーションを維持するためにこれをしました。

var taskFormOptionSet = { 
     Form1: 1, 
     Form2: 2, 
    }; 

     var FormNames = { 
      Form1: "Form1", 
      Form2: "Form2", 
     }; 

    var myform = Xrm.Page.getAttribute("need_Prescoring").getValue(); 
    var currentform = Xrm.Page.ui.formSelector.getCurrentItem(); 

    if (currentform != null) { 
     var formId = currentform.getId(); 
     var formLabel = currentform.getLabel(); 
    } 

    if (myform == taskFormOptionSet.Form1 && formLabel != FormNames.Form1) { 
     var items = Xrm.Page.ui.formSelector.items.get(); 
     for (var i in items) { 
      var form = items[i]; 
      var formId = form.getId(); 
      var formLabel = form.getLabel(); 

      if (formLabel == FormNames.Form1) { 
       form.navigate(); 
       return; 
      } 
     } 

    } 
-1

ユーザは自分が変わるまで、彼は右のフォームにリダイレクトされますフォームを変更しようとすると、私は、ブール値がtrueでの名前かどうかを確認することである別のソリューションを使用する、サポートされているいないとしてブール値

DiligenceSwitch: function(){ 
    if (Xrm.Page.ui.formSelector.getCurrentItem() != null) { 
     var currentform = Xrm.Page.ui.formSelector.getCurrentItem();    
    } 

    if (currentform != null) { 
     var formId = currentform.getId(); 
     var formLabel = currentform.getLabel(); 
    } 

    var kycId = Xrm.Page.data.entity.getId();   
    SDK.REST.retrieveRecord(kycId, "kyc_Kycdiligence", "kyc_Needprescoring", null,    //field for searching the targeted field, entity, targeted field, ... 
     function (kyc) { 
      if (kyc != null || kyc.kyc_Needprescoring != null) { 
       if (formLabel != "Pre-Scoring" && kyc.kyc_Needprescoring == true) {  
        var windowOptions = { openInNewWindow: false }; 
        var parameters = {}; 
        parameters["formid"] = "4B0C88A9-720C-4BFA-8F59-7C1D5DD84F02"; 
        Xrm.Utility.openEntityForm("kyc_kycdiligence", kycId, parameters, windowOptions); 
        alert("Vous devez faire le pre-scoring");  
       } 
      } 
     }, 
     function (error) { 
      Xrm.Utility.alertDialog(error.message); 
     }); 
}, 
+0

私の答えは見ましたか?フォームで利用可能なフィールド値を取得するためにもう1回サービスコールをしていますか? –

+0

私は値onloadを取得する必要があり、時にはエラーを生成するnullです。このフィールドは@ArunVinothの形式で非表示にする必要があります – Marwan

関連する問題