2017-02-19 17 views
0

Microsoft CRM用のタイマーアプリケーションを作成しています。私はすでにWebリソースとしてアプリケーションを作成しています。 CRMのXRMクライアント側コードを使用して作業を行います。 CRM内のカスタムエンティティのデータを更新する必要があります。しかし、タイマーアプリケーションの要件は変更されており、ユーザーがページから移動してもアクティブな状態を維持する必要があります。したがって、インシデントフォームで開く必要がありますが、ユーザーはCRMの他の場所をナビゲートでき、オープンにして、時間を積極的に追跡する必要があります。Microsoft CRMの新しいウィンドウでWebリソースをポップアップ

私の最初の考えは、ボタンをクリックするだけで別の新しいウィンドウにWebリソースをポップして、それを独立して実行することでした。しかし、コードがフォーム内のWebリソースに埋め込まれている場合、それらが離れて移動すると、コードはアンロードされません。

私は数ヶ月間だけMicrosoft CRMで作業していたので、すべてのオプションがわからないことがあります。

ので、具体的な質問:

それは彼らがフォームから離れて移動し、まだXRMクライアントライブラリへのアクセス権を持っているときにアクティブなまま、新しいウィンドウでスタンドアロンのWebリソースを開くことは可能ですか? (もしそうなら、どのように?)

答えがノーなら、私は代わりのアイデアを聞きたいです。

ありがとうございます。

答えて

0

このシナリオを解決するために、2つのWebリソースを使用しました。必要な場合は情報を収集し、第二のウェブリソースにそれを送信するためにカスタムボタンを持つフォーム上の一つ:

  // Collect fields we know exist at this point, because they are required fields on the case 
 
      var caseId = window.parent.Xrm.Page.data.entity.getId(); 
 

 
      if (caseId != '') { 
 
       var caseName = window.parent.Xrm.Page.data.entity.getPrimaryAttributeValue(); 
 
       var accountId = window.parent.Xrm.Page.getAttribute("customerid").getValue()[0].id; 
 
       var accountName = window.parent.Xrm.Page.getAttribute("customerid").getValue()[0].name; 
 

 
       // package paramters to pass to timer web resource 
 
       var customParameters = encodeURIComponent("caseid=" + caseId + "&casename=" + caseName + "&accountid=" + accountId + "&accountname=" + accountName); 
 
       // Open web resource 
 
       window.parent.Xrm.Utility.openWebResource("sp_casetimer", customParameters, 500, 200); 
 

 
      } else { 
 
       // Error message would go here - case must be saved first. 
 
      }

sp_casetimerのWebリソースは、解析し、隠しフィールドに格納する変数と独立して機能することができる。 /XRMServices/2011/OrganizationData.svcを使用して、カスタムケースタイムエンティティでCRUD操作を実行します。

関連する問題