2017-02-19 3 views
0

Je crée une application de minuterie pour Microsoft CRM. J'ai déjà créé l'application en tant que ressource Web et cela fonctionne. Il utilise le code client XRM de CRM pour faire le travail. Il doit mettre à jour les données dans une entité personnalisée dans CRM. Cependant, les exigences pour l'application de minuterie ont changé et il doit maintenant rester actif même si l'utilisateur quitte la page. Il doit donc s'ouvrir sur le formulaire d'incident, mais l'utilisateur peut alors naviguer ailleurs dans le CRM et doit rester ouvert et suivre activement le temps.Pop-up une ressource Web dans une nouvelle fenêtre dans Microsoft CRM

Mon premier réflexe était de simplement faire apparaître la ressource web dans une nouvelle fenêtre séparée sur le bouton click et de la faire fonctionner indépendamment. Toutefois, si le code est incorporé à l'intérieur d'une ressource Web dans le formulaire, si le code est déplacé, le code ne sera-t-il pas déchargé?

Je ne travaille qu'avec Microsoft CRM depuis quelques mois, donc je ne connais probablement pas toutes les options.

La question spécifique:

Est-il possible d'ouvrir une ressource Web autonome dans une nouvelle fenêtre qui reste actif lorsqu'ils naviguent loin de la forme et ont encore accès à la bibliothèque cliente XRM? (Si oui, comment?)

Si la réponse est non, alors j'aimerais entendre des idées alternatives.

Merci.

Répondre

0

Pour résoudre ce scénario, j'ai utilisé 2 ressources Web. Un sur le formulaire qui a un bouton personnalisé pour recueillir des informations de cas requis et l'envoyer à la deuxième ressource 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. 
 
      }

La ressource web sp_casetimer parse ensuite et stocke les variables dans des champs cachés et peut fonctionner indépendamment. J'utilise /XRMServices/2011/OrganizationData.svc pour ensuite effectuer des opérations CRUD sur mon entité time-time personnalisée.