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

Kasım 8, 2009 - Yazar: editor3  
Kategori: CRM

 

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 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

Yorum yapın