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 ediyor try { 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şturuyoruz ConditionExpression 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 ediyor try{ 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.
Bir sonraki makalemizde görüşmek üzere.
Volkan KORKMAZ
volkankorkmaz@gmail.com