MSCRM 3.0 Formları içinden Web Servicelerini Çağırarak Aynı Kayıtları Engelleme

MSCRM 3.0 Formları içinden Web Servicelerini Çağırarak Aynı Kayıtları Engelleme Bu makalemizdeki örnek  kodlarla MSCRM 3.0 Formları içinden Web Serviceleri ni çağırıyoruz.  Bu örnek bir firma oluşturulduğunda ya da güncellendiğinde aynı kayıt olup olmadığını kontrol ediyor. Bu javascript kodunu Firma Formunun OnSave metoduna koyuyoruz. Bu kod ile CRM server makinasındaki web service kullanarak aynı kayıtları çağıracak.

var url = “/DuplicateDetection/DuplicateDetection.asmx/CheckDuplicateAccount”;var msg = “ ”; try {    // Web Service bağlanıyoruz    var oXmlHTTP = new ActiveXObject(”Msxml2.XMLHTTP”);    // Web Service için connection oluşturuyoruz    oXmlHTTP.Open(”POST”, url, false);    //Browserın headerına değer atıyoruz    oXmlHTTP.setRequestHeader(”Content-Type”, “application/x-www-form-urlencoded”)   

    var qs = “name=” + document.all.name.value;       qs += “&objectguid=” + crmForm.ObjectId;    // Değerimizi gönderiyoruz

    oXmlHTTP.Send(qs);     

 var result = “”;      if ((oXmlHTTP.responseXML.xml) != null && (oXmlHTTP.responseXML.xml.toString().length > 0))    {      // Service bize string bir kök dönüyor      result = oXmlHTTP.responseXML.selectSingleNode(”string”).text;    }     msg = result; } catch(e) {    msg = “Bir hata oluştu. Lütfen daha sonra tekrar deneyiniz. Error:” + e.message; }  // Kullanıcıya bizim cevabımızı gösteriyoruz if(msg.length > 0)  {  alert(msg);  }

 

 

 

Aşağıdaki kod bizim aynı kayıtları web service yardımıyla bulmamızı sağlıyor :

Here is code for the web method for our duplicate detection webservice:

[WebMethod]public string CheckDuplicateAccount(string objectguid, string name){CrmService service = new CrmService();service.Credentials = System.Net.CredentialCache.DefaultCredentials;if(objectguid == null || objectguid == string.Empty ){//Firmanın oluşturulduğu anı kontrol ediyortry{QueryExpression query = new QueryExpression();query.EntityName = EntityName.account.ToString();// Create a set of columns to return.ColumnSet cols = new ColumnSet();cols.Attributes = new string [] {”name”};// ConditionExpression oluşturuyoruzConditionExpression condition = new ConditionExpression();condition.AttributeName = “name”;condition.Values = new string[] {name}; FilterExpression filter = new FilterExpression();filter.FilterOperator = LogicalOperator.And;filter.Conditions = new ConditionExpression[] {condition};query.ColumnSet = cols;query.Criteria = filter;BusinessEntityCollection retrieved = service.RetrieveMultiple(query);if(retrieved.BusinessEntities.Length > 0 ){return “Aynı kayıt ismi : ” + name;}else{return “”;}}catch(System.Web.Services.Protocols.SoapException se){return “ERROR: ” + se.Detail.InnerText;}}else {//Firmanın güncelleme anını kontrol ediyortry{QueryExpression query = new QueryExpression();query.EntityName = EntityName.account.ToString();.ColumnSet cols = new ColumnSet();cols.Attributes = new string [] {”name”}; ConditionExpression condition1 = new ConditionExpression();condition1.AttributeName = “name”;condition1.Values = new string[] {name};condition1.Operator = ConditionOperator.Equal;ConditionExpression condition2 = new ConditionExpression();condition2.AttributeName = “accountid”;condition2.Values = new string[] {objectguid};condition2.Operator = ConditionOperator.NotEqual; FilterExpression filter = new FilterExpression();filter.FilterOperator = LogicalOperator.And;filter.Conditions = new ConditionExpression[] {condition1, ondition2};query.ColumnSet = cols;query.Criteria = filter; BusinessEntityCollection retrieved = service.RetrieveMultiple(query);if(retrieved.BusinessEntities.Length > 0 ){return “Aynı kayıt ismi : ” + name;}else{return “”;}}catch(System.Web.Services.Protocols.SoapException se){return “ERROR: ” + se.Detail.InnerText;}}

 

Bu makalemizinde sonuna geldik. Bu makalemizde CRM ‘in Web Servicelerini MS CRM Formları içinde java script kodları ile çağırarak aynı isimde firmaların oluşmasını engelledik.

Döküman Arama

Başlık :

Kapat