Microsoft Dynamics CRM içerisinde İstemci Taraflı Kod Geliştirme
Web uygulamalarının istemci (client) tarafında birtakım işlemleri
gerçekleştirmesi sunucunun (server) daha rahat çalışmasını sağlayacaktır.
Dynamics CRM'de bir web tabanlı bir mimariye sahip olduğu için bu durum onda da
geçerli. DOM nesne modelinde her HTML elemanı bir nesne olduğu için DHTML
programlama teknikleri ile CRM'in formlarına ve nesnelerine erişip işlemler
gerçekleştirebilirsiniz.
CRM'in SDK'sı içerisinde "Client Extensions and Scripting" bölümü altında
detaylı bilgilerini bulabileceğiniz metot, olay ve nesneleri bir arada
bulabileceğiniz bir yazı hazırladım size.
1 |
Genel
Değişkenler |
|
Değişken |
Açıklama |
SERVER_URL |
CRM Web Server'ın URL'sini döndürür |
USER_LANGUAGE_CODE |
Kullanıcının dil kodunu döndürür |
ORG_LANGUAGE_CODE |
Organizasyonun dil kodunu döndürür |
ORG_UNIQUE_NAME |
Organizasyonun adını döndürür |
2 |
Genel Metotlar |
|
Metot |
Açıklama |
IsOnline |
Eğer kullanıcı online olarak sistemi kullanıyorsa
true döndürür (Outlook client ile ofline kullanma özelliği mevcuttur) |
IsOutlookClient |
Kullanıcı Microsoft Dynamics CRM for Outlook ile
sisteme ulaşıyorsa true döndürür |
IsOutlookLaptopClient |
Kullanıcı Microsoft Dynamics CRM for Outlook with
Offline Access ile sisteme ulaşıyorsa true döndürür |
3 |
Genel Olaylar |
|
Olay |
Açıklama |
OnLoad |
Form Browser'a
yüklendiğinde icra edilir. Bu olayı kullanrak form üzerinde kullanıcının
karşısına gelmeden istediğiniz değişikliği yapabilrsiniz |
OnSave |
Kullanıcı Save,
Save and Close ya da Save and New
düğmelerine tıkladığında çalışan olaydır. Bu olay form servera
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
event.returnValue = false; kodunu
çalıştırmalısınız. |
Genel değişkenler ve metotları gördükten sonra şimdi nesnelerimizi içinde
barındıran crmForm isimli formumuza ait neler varmış bir bakalım.
1 |
crmForm
Özellikler |
|
Özellik |
Açıklama |
All |
Form nesneleri
kolleksiyonu |
IsDirty |
Formda değişiklik
yapılıp yapılmadığını kontrol etmenizi sağlar. Değer atanabilir. |
FormType |
Formun açılış
biçimi. Alabileceği değerler: |
0 = Tanımlanmamış
Form Tipi |
1 = Yeni Kayıt |
2 = Kayıt
Güncelleme |
3 = Sadece
Okunabilir Form |
4 = DevreDışı
Bırakılmış Form |
5 = Hızlı Yeni
Kayıt |
6 = Toplu
Güncelleme |
ObjectId |
Açılmış olan kaydın
GUID cinsinden ID'sini döndürür. Yeni Kayıt olarak açılmış formda null
döner. |
ObjectTypeName |
Görüntülenen
nesnenin adı döner |
2 |
crmForm Metotlar |
|
Metot |
Açıklama |
Save() |
Formu kaydeder |
SaveAndClose() |
Formu kaydeder ve
kapatır |
SetFieldReqLevel(sField,
bRequired) |
Bir alanı gerekli ya
da gereksiz olarak işaretler |
Aşağıdaki tabloda crmForm.all.<alanadi> ile erişilebilir alanların ortak
özellik ve metotlarını bulabilirsiniz.Burada unutulmamsı gereken nokta lookup ve
picklist alanların aslında birer dizi olduklarıdır. İçlerinden birden fazla veri
tutabildikleri gibi kullanıcının gördüğü ile veritabanına yazılanların farklı
olmasıdır. (lookup için GUID, picklist için ise seçilenin integer değeri
yazılır).
1 |
crmForm.all
Özellikler |
|
Özellik |
Açıklama |
Precision |
currency
veri float veri
tiplerinde virgülden sonraki digit sayıını verir. |
DataValue |
Veri okunan ve
yazılan özellik. picklist
ve lookup için ek
parametreler almaktadır. |
Disabled |
Kullanıcı girişini
açmanızı veya kapamanızı sağlar. |
ForceSubmit |
Bu özellik disabled
edilmiş olan alanların veritabanına kaydedilmesini sağlar. Standartta
disabled alanları CRM kaydetmez. |
IsDirty |
Alan üzerinde
değişiklik yapılıp yapılmadığını kontrol etmenizi sağlar. |
Min |
currency,
float ve
integer değer türlerinde
erişilebilir en küçük değeri verir. |
Max |
currency,
float ve
integer değer türlerinde
erişilebilir en büyük değeri verir. |
MaxLength |
string ya da memo
alanlarının en büyük değerini verir. |
RequiredLevel |
Gereksinim
seviyesini verir |
0 = Gereksinim
düzeyi yok |
1 = Business
Recommended (Önerilen) |
2 = Business
Required (Gereken) |
2 |
crmForm.all Metotlar |
|
Metot |
Açıklama |
SetFocus() |
Mouse işaretçisini
formda o alana gönderir. |
FireOnChange() |
Alanın
OnChange() olayını
çalıştırır. |
3 |
crmForm.all Olaylar |
|
Olay |
Açıklama |
OnChange |
Kullanıcı bir alan
içerisindeki değeri değiştirdiğinde çalışan olaydır. |
Ek olarak bilinmesi gereken PartyList
ve email aktivitesi To alanı birden fazla değer almaktadır. Diğer
Lookupların yapıları da bir dizi olmasına karşın tek değer alırlar.Yani sadece
0. indis doludur.
Lookup alanları daha derinlemesine inceleyelim. Lookup alanların yukarıdaki
özelliklere ek olarak aşağıdaki üç özelliği bulunmaktadır.
crmForm.all.<lookupfiled> Özellikler |
Özellik |
Açıklama |
Id |
GUID değeri taşır.
Okunabilir ve yazılabilir. |
TypeName |
Referans edilmiş
entity'nin adı. Okunabilir ve yazılabilir. |
Name |
GUID'in değerinin
Form'da gösterilecek olan ismi. Okunabilir ve yazılabilir. |
Örneklerle konuyu pekiştirelim. Lookup veri alanından değer okumak ile ilgili örnek;
Bu örnekte bir
primarycontactid isimli alandaki değeri öğreniyoruz.
var lookupItem =
new Array;
//primarycontactid alanndaki veriyi okuyoruz.
lookupItem = crmForm.all.primarycontactid.DataValue;
//eğer veri var ise gösteriyoruz.
if (lookupItem[0] !=
null) {
// metin
alert(lookupItem[0].name);
// GUID
alert(lookupItem[0].id);
// entity ad.
alert(lookupItem[0].typename);
}
Lookup veri alanına veri yazmakla ilgili örnek;
Bu örnekte parentaccountid isimli alana değer atıyoruz.
//bir Array oluturuyoruz.
var lookupData =
new Array();
//Object nesnesi ekliyoruz.
var lookupItem = new
Object();
//Object nesnemizde id, typename ve name zelliklerini dolduruyoruz.
lookupItem.id =
'{1AAC1363-01A1-DB11-8432-0003FF9CE217}';
lookupItem.typename = 'account';
lookupItem.name = 'A Bike Store';
// Object nesnemizi Array'a veriyoruz.
lookupData[0] = lookupItem;
// Array' parentaccountid alanna veriyoruz.
crmForm.all.parentaccountid.DataValue = lookupData;
1 |
crmForm.all.<picklistfiled>
Özellikler |
|
Özellik |
Açıklama |
DataValue |
Seçilmiş olan alanın
integer değeri. Okunabilir ve yazılabilir. |
SelectedText |
Seçilmiş olan alanın
text değeri. |
GetSelectedOption |
Seçilmiş olan
değerin option cinsinden değeri. |
Options |
Picklist
içerisindeki öğelerin Array cinsinden değerini verir, ayrıca array
içerisinde yeni bir değer var ise bu da gösterilmiş olacaktır.
Okunabilir ve yazılabilir. |
2 |
crmForm.all.<picklistfiled> Metotlar |
|
Metot |
Açıklama |
AddOption(Name,
DataValue) |
Picklist Array'ına
yeni öğeler ekler. Name
ve DataValue
geçerli değişkenler olmalıdır. |
DeleteOption(value) |
Integer değeri
verileren öğeyi picklistten kaldırır |
Picklist alanlar ile örneğimize geçelim;
Bu örnekte categorytype isimli alan içerisindeki
değerlerle oynuyoruz.
var oField = crmForm.all.categorytype;
// 4. öğeyi alyoruz.
var oOption = oField.Options[4];
// kaç tane öğe olduğunu öğreniyoruz.
alert("Original length :"
+ oField.Options.length);
// birinci öğeye değer atıyoruz.
oField.DataValue = 1;
// birinci öğenin adını alıyoruz.
alert(oField.SelectedText);
// 4. öğeyi siliyoruz.
oField.DeleteOption(4);
// kaç tane öğe olduğunu öğreniyoruz.
alert("New length :"
+ oField.Options.length);
// 4. öğeyi yeniden ekliyoruz.
oField.AddOption(oOption.Text, oOption.DataValue);
// kaç tane öğe olduğunu öğreniyoruz.
alert("Restored length :"
+ oField.Options.length);
Form üzerinde JavaScript kodu ile yukarıdaki anlattıklarımı birleştirerek her
şeyi yazmanız mümkün.
Daha önceki JavaScript ile ilgili makalelerimden başka örnekler de
bulabilirsiniz:
http://www.cub-e.net/post/CRM-icerisinden-Java-Script-kullanarak-web-sayfasc4b1-cagc4b1rmak.aspx
http://www.cub-e.net/post/Microsoft-CRM-30-Navigation-Bar-Ogelerini-Form-Icinde-IFrame-Ile-Gostermek.aspx
http://www.cub-e.net/post/OnSave()-Events-on-Dynamics-CRM-javascipt.aspx
http://www.cub-e.net/post/OnSave()-Events-on-Dynamics-CRM---Part-II.aspx
http://www.cub-e.net/post/Ascentium-CrmService-JavaScript-Library.aspx
http://www.cub-e.net/post/Use-JavaScript-executecalllaunch-Dynamics-CRM-40-Workflow.aspx
http://www.cub-e.net/post/CRM-workflow-date-update-includes-saturdays-sundays.aspx
http://www.cub-e.net/post/Microsoft-Dynamics-CRM-JScript-Export-Tool-JavaScript.aspx
Bir makalemizin daha sonuna geldik. Umarım anlattıklarım faydalı olmuştur.
Hepinize iyi çalışmalar.
Barış KANLICA | Dynamics CRM MVP
Microsoft Certified Business Management Solution
Specialist
brsk@e-kolay.net
|
www.cub-e.net |
forum.cub-e.net