2010-08-03 13 views
1

J'ai un formulaire avec trois champs que je voudrais remplir en fonction de trois attributs d'une entité différente. Quelle est la meilleure façon de faire cela? J'ai essayé, basé sur des choses que je trouve en ligne:Extraction de données d'une autre entité dans CRM 3.0?

if (crmForm.all.new_name.DataValue == null) { return; } 
var sdk = new XrmDataContext(null, null); 
var id = crmForm.all.new_name.DataValue[0].id; 
var fetchXml = "<fetch mapping=\"logical\"><entity name=\"mag_identificationtype\"><all-attributes /><filter type=\"and\"><condition attribute=\"new_advertisingrate\" operator=\"eq\" value=\"" + id + "\" /></filter></entity></fetch>"; 
var result = sdk.Fetch(fetchXml); 
for (var i = 0; i < result.length; i++) { 
crmForm.all.new_mediapaymentplan.DataValue = parseFloat(result[i].attributes["new_mediapaymentplan"]); 
} 
for (var i = 0; i < result.length; i++) { 
crmForm.all.new_yellowpagepayment.DataValue = parseFloat(result[i].attributes["new_fixed_yellowpages_fee"]); 
} 
for (var i = 0; i < result.length; i++) { 
crmForm.all.new_extrapayment.DataValue = parseFloat(result[i].attributes["new_extraadvertisingpayment"]); 
} 

... mais il ne fonctionne pas, et je soupçonne que c'est parce qu'il est conçu pour 4,0. Existe-t-il un moyen d'accomplir ceci en 3.0, et si oui, de quoi s'agit-il?

Répondre

0

Vous avez raison d'utiliser Advanced Developer Extensions pour MS CRM 4.0 dans votre code et cela ne fonctionnera pas sur la version 3.0.

Il existe un certain nombre de façons d'accomplir cela dans MS CRM 3.0.

  1. Vous pouvez utiliser un assemblage de légende lorsque l'entité ou l'entité associée est créée ou mise à jour.

  2. Vous pouvez utiliser un flux de travail personnalisé lorsque l'entité ou l'entité associée est créée ou mise à jour.

  3. Vous pouvez créer une application planifiée pour remplir ces champs.

  4. Vous pouvez appeler les services Web CRM à partir de JavaScript dans le formulaire pour trouver ces champs.

Ce qui n'est pas clair pour moi, c'est comment ces entités sont liées. Sont-ils 1: N ou N: 1

0

J'avais l'habitude d'avoir un problème similaire, comme dit par Mark, vous utilisez des classes dans CRM 4 et plus, développé par la communauté XRM.

Dans votre cas, j'utiliserais l'appel brut de service Web avec XMLHTTP comme indiqué dans cet article.

http://blog.customereffective.com/blog/2008/02/calling-the-crm.html

http://ayazahmad.wordpress.com/2006/12/14/calling-custom-web-services-through-mscrm-30-form-a-way-to-duplicate-detection/

est d'abord pour appeler les services de CRM, et je pense que l'exemple expliqué à ce sujet, est d'un CRM 3.0. D'autre part, le deuxième lien ne parle que d'appeler un service web à partir de javascript, le processus est le même que pour appeler le service web CRM, le seul que vous avez à changer est l'URL du point de terminaison.

La manière de le faire est de construire l'enveloppe SOAP manuellement. Je me souviens qu'il y avait une bibliothèque javascript pour faire des recherches, créer, mettre à jour ... de javascript à CRM, mais je ne me souviens pas où il est, et je pense que cela a été fait pour CRM 4.0, de toute façon je vais le chercher postez le ici.

Voir vous

EDIT:

Ce lien a quelques informations sur ce que je l'ai expliqué:

https://community.dynamics.com/product/crm/crmtechnical/b/crmdelvingintodynamics/archive/2008/07/11/a-microsoft-dynamics-crm-javascript-sdk.aspx

Ascentium utilisé pour avoir le SDK CRM pour javascript dans leur web, mais la plupart des liens disponibles sur un blog Avanade sont disponibles, donc c'est un bon endroit pour trouver de nouvelles informations.

http://blogs.infinite-x.net/2008/07/15/ascentium-crmservice-javascript-library/

http://www.avanadeblog.com/xrm/

Mais garder un oeil sur la version qu'il est prêt à.

À bientôt.