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
volkankorkmaz@gmail.com
|