Makale Özeti

Daha önceki makalede sizlere crm formlarına nasıl javascript yazılacağını göstermiştim. Bu yazımda ise iş hayatında kullanacağımız javascript kod örneklerini vereceğim. Ayrıca yazdığımız kodları nasıl derlendiğine beraber bakacağız.

Makale

Ms crm formlarını javascript ‘le özelleştirmek

Ms crm formlarını javascript ‘le özelleştirmek

Daha önceki makalede sizlere crm formlarına nasıl javascript yazılacağını göstermiştim. Bu yazımda ise  iş hayatında kullanacağımız javascript  kod örneklerini vereceğim. Ayrıca yazdığımız kodları nasıl derlendiğine  beraber bakacağız.  Bu kodları yazdıkdan sonra bir hata varsa onu nasıl bulabilirim diyenler vardır. Bu sorunun cevabı çok basit.Yazdığımız kodun içine debugger; diye bir kod yerleştiriyoruz , bu kod bize javascript kodlarımızı derlememiz için yardımcı oluyor böylelikle  yazdığımız scriptlerin çalışıp çalışmadığını visual stadio yardımıyla öğrenebiliyoruz (tabiki tek yol bu değil derlemeye yadımcı olan başka yolar da var daha sonraki makalelerde bunlara da değineceğim).
Bu arada unutmamız gereken bir konuda  internet explorer sayfamızın debugging özelliğini enable etmemizdir. Aksi takdirde kodlarımız debugging olmayacakdır.
Debugging özelliğini enable ettikden sonra aşağıda gösterdiğim şekildeki gibi otomotikmen debug olacakdır.
İsterseniz birazda Ms crm deki mevcut bulunan alanları script içinde nasıl kullanacağımıza birlikde bakalım ve daha sonra örneklere geçelim.
Genel Değişkenler (Global Variabler of ms crm 4.0)
SERVER_URL: Organizasyon Url sini(http,https) verir örneğin http://myserver/myorg
USER_LANGUAGE_CODE: Kullanıcını dil kodunu verir (örnek : 1033)
 ORG_LANGUAGE_CODE: Organizasyonun dil kodunu ve aynı zamanda kurulumda seçtiğimiz default  dili verir.
 ORG_UNIQUE_NAME: Organizasyonun adını döndürür.
Genel Değişkenlerle ilgili bir code örneği aşağıda verilmiştir.

İf(ORG_LANGUAGE_CODE!=USER_LAGUAGE_CODE)

{

Alert(‘Bu kullanıcının seçtiği dil kodu ’+ USER_LAGUAGE_CODE);

}

  Genel Metotlar  
IsOnline: Kullanıcı online olarak sistemi kullanıyorsa bize dönen değer true olacaktır.
 IsOutlookClient: Kullanıcı Microsoft Dynamics CRM for Outlook ile sistemi kullanıyorsa bize dönen değer true olacakdır.
 IsOutlookLaptopClient: Microsoft Dynamics CRM Outlook için çevrimdışı olup olmadığını denetler.

if (IsOutlookLaptopClient())

{

alert("You are using Microsoft Dynamics CRM for Outlook with Offline Access");

}

else

{

alert("You are not using Microsoft Dynamics CRM for Outlook with Offline Access");

}

 Genel Olaylar  
 OnLoad: Form Browser'a yüklendiğinde gerçekleşen olaydır.
 OnSave:   Save ya da Save and Close  düğmelerine tıkladığında çalışan olaydır. onSave olayı kullanıcının giridiği alanlar sunucuya  gönderilmeden çalışır ve eğer istemediğiniz bir değer varsa form üzerinde, servera gidişi iptal edebilirsiniz. Eğer kaydetme işlemini iptal etmek istiyorsanız.
onChange :   Formda istediğimiz alanlar (Field) üzerinde işlem yapıldığında çalışacak olan olaydır yani değişme olayıdır.
crmForm Özellikler:  
*Form özelliklerine  crmForm.propertyname(özellik Adı) ile erişilebilir.
 All: Form nesneleri kolleksiyonu
 IsDirty: Formda değişiklik yapılıp yapılmadığını kontrol etmenizi sağlar.
FormType :Formun açılış biçimini gösterir.
 
ObjectTypeName: Görüntülenen nesnenin adı döner.
ObjectId: Değiştirdiğimiz alanın id ‘si anlamına gelmektedir. Yani nesne anahtarı demektir.Bize kaydın Guid’ ini verir. Bu özellik çok kullanacağımız bir özellik olacaktır. İlerde yapacağımız örneklerde daha detaylı olarak kullanacağız bu özellik  başka bir sayfaya yada bir button aracılığıyla bazı işlemler yapmamıza yardımcı olacaktır.
ObjectTypeCode    : Özelliği   görüntülenen varlık türü kodu içerir.
//Bu örneğimizde ise varlık türü kodunun Account(firma) veya Contact(ilgili kişi) olduğunu öğreniyoruz.
    var CRM_ENTITY_ACCOUNT = 1;
    var CRM_ENTITY_CONTACT = 2;
    switch (crmForm.ObjectTypeCode)
    {
    case CRM_ENTITY_ACCOUNT:
      alert("This is an Account form.");
      break;
   case CRM_ENTITY_CONTACT:
      alert("This is a Contact form.");
      break;

}

EntityTypeCode     :  Varlık türünün ne olduğunu bize verir(EntityTypeCode).Aşağıdaki tablolarda bazı varlık kodları(EntityTypeCode) verilmiştir.
 
 
 
                                                                                                              
 
Yukarıda anlatmış olduğum özellikler için genel bir örnek yapalım.Daha sonraki dersimizde işinize çok yarayacak kod örneklerini vereceğim.

var CRM_FORM_TYPE_CREATE = 1;

var CRM_FORM_TYPE_UPDATE = 2;

// Bu örnek de formun formtype nı öğreniyoruz eğer form update olmuşsa formun objectId’sini buluyoruz veya formtype değeri create ise bir alert verecekdir.

switch (crmForm.FormType)

{

   case CRM_FORM_TYPE_CREATE:   

      alert("This is a create form.");

      break;

   case CRM_FORM_TYPE_UPDATE:

      alert("This is an update form, the ID is " + crmForm.ObjectId + ".");

      break;

}

all.:  Form daki bütün alanlara all özelliğini kullanarak ulaşırız. Bu özellik form nesnelerinin kolleksiyon özelliğidir.
crmForm.all. propertyname(özellik Adı) :
DataValue:Bu özellikle  alanların değerini okuyabilir  ya da yazabiliriz(set/get).
Bu örneğimizde bir checkbox True ve ya False değerine göre işlem yapıyoruz:
crmForm.all.new_mybitfield.DataValue = true;
crmForm.all.new_mybitfield.DataValue = false;
if (crmForm.all.new_mybitfield.DataValue){
    // DataValue’nun değeri true ise, Birşeyler yap.
}else{
    // DataValue’nun değeri false ise, Birşeyler yap.
}
Disabled:  Form üzerinde belirlediğiniz alana veri girişini engelleyebilirsiniz ve ya sadece okunabilir(read only) yapabilirsiniz.
Aşağıdaki  iki özellikde bize aynı sonucu verir.
crmForm.all.new_alanadi.disabled = true;
crmForm.all.new_alanadi.readOnly = true;       
 yada bir bit alanı  ve ya bir lookup alanı disable edebiliriz.
crmForm.all.new_bitalanadi.disabled = true;
crmForm.all.new_alanadilookupid.disabled = true
;
IsDirty: Bize boolean bir değer döner ve alan üzerinde değişiklik yapılıp yapılmadığını kontrol  eder.
ForceSubmit:  Crm sadece değişen  özellikleri kaydeder. Form üzerinde  disabled alanlar varsa CRM kaydetmez. Bu sebeple ForceSubmit özelliği disabled  olan alanların database kaydedilmesini sağlar.
Min: Bize sayısal olarak en küçük değeri verir.
Max: Bize sayısal olarak en büyük değeri verir.
RequiredLevel: Gereksinim seviyesini verir(  Gereksinim düzeyi yok(No constraint)=0,  Önerilen(  Business Recommended)=1 , Gerekli (Business Required)=2)
Bu örneğimizde bir if else döngüsü içerisinde gereksinim değerine göre karşılaştırma yapıyoruz:
var CRM_REQUIRED_LEVEL_NORMAL = 0;
var CRM_REQUIRED_LEVEL_RECOMMENDED = 1;
var CRM_REQUIRED_LEVEL_REQUIRED = 2;
var oField = crmForm.all.new_gereksinimalan;
 
if(oField.RequiredLevel== CRM_REQUIRED_LEVEL_NORMAL)
{
alert("Bu alan gereksinimi olmayan bir alandır."); 
}
else if(oField.RequiredLevel==CRM_REQUIRED_LEVEL_RECOMMENDED)
{
alert("Bu alan önerilen bir alandır.");
}
 
else if(oField.RequiredLevel==CRM_REQUIRED_LEVEL_REQUIRED)
 
{
alert("Bu alan gerekli bir alandır."); 
}
SetFocus:
 Mouse İmlecini Formadaki bir alana göndermek için kullanılır.
crmForm.all.your_field.ForceSubmit = true;
FireOnChange: Alanın onChange  olayını tetiklemek  için kullanılır.
Buraya kadar işlediğimiz konularda genel olarak metotlardan ve ya özelliklerden bahsetik birazda örneklere yoğunlaşalım.
Crm’de alanların gizlenmesi ve ya gizli alanların gösterilmesi:
Alanın görünmez yapmak için aşağıda gösterdiğim yolu kullanabilirsiniz.
crmForm.all.<alanadı>.style.display = 'none';
görünür hale getirmek için ise crmForm.all. <alanadı>.style.display = 'inline';
ve ya
crmForm.all. <alanadı>.style.display = 'block';
kullanılabilir.
Alan eğer Lookup ise Lookup’ın label kısmınında saklanması için gerekli kod aşağıdaki gibidir:
crmForm.all. <alanadı>.style.visibility = 'hidden';
crmForm.all. <alanadı>_c.style.visibility = 'hidden';
crmForm.all. <alanadı>_d.style.visibility = 'hidden';
NavBar’da  gizlemek için ise iki entity arasındaki ilişkinin adı verilir.
var tabset=’1-N yapılan ilişkinin adı’;
var navItem = window.document.getElementById( 'nav_' + tabSet);
navItem.style.display=”none”;
Text alanın değerinin tüm harflerini  büyük ve ya küçük Yapmak (Uppercase/Lowercase):
Girilen Text alanın değerinin tüm harflerini  büyük ve ya küçük Yapmak için alanın onChange olayına aşağıdaki kodları yazarız.
crmForm.all.name.DataValue = crmForm.all.name.DataValue.toUpperCase();  //Girilen harfleri  büyük harfe çevirir.
crmForm.all.name.DataValue = crmForm.all.name.DataValue.toLowerCase(); //Girilen harfleri  küçük harfe çevirir.
Formun arka rengini değiştirmek ve ya alanların label’ların renklerini ve font’larını  değiştirmek :   
Formun arka rengini değiştirmek için form’un onLoad() olayına aşağıdaki kodu yazarız.
document.all.areaForm.style.backgroundColor = 'pink';
Alana ait label’ınn( varchar)  font özellkleri ve rengini değiştirmek için aşağıdaki yolu izleriz.
alanının label’nın özelliklerinin değişmesi için alan adının sonuna (_c) yazarız.
  crmForm.all._c.style.fontWeight = 'Arial'; // Yazı tipini değiştiririz.
  crmForm.all._c.style.fontSize = '15px'; // Yazı Boyutunu değiştiriz
  crmForm.all._c.style.color = '#ef0000';  //Yazı rengini değiştiririz.     
Son olarak aşağıdaki JavaScript kod örneğini veriyorum. Harfleri kontrol eder ve saçma olan geçersiz karakterleri  bir alt çizgi ile yer değiştirir.
// ilk önce alana saçma bir değer verelim
crmForm.all.<alanadı>.DataValue = "Benim?adım/\ Ercan";
if (crmForm.all.<alanadı>!= null)
{
              
               var replaceChar = "_";
               var reg = new RegExp('[,/\:*?""<>|]', 'g');
               var sonuc = crmForm.all. <alanadı>.DataValue.replace(reg, replaceChar);
               alert(sonuc);
// Bize sonuç olarak “Benim_adım_Ercan” gibi bir değer döner.
}
Bu yazımında sonuna geldik. Gelecek yazımda sizlere faydalı olacak javascript kod örnekleri vereceğim. Gelecek yazımda görüşmek üzere.....
Ercan Top | CRM Software Developer
 +90 534 335 6873