Makale numarası: 2283955 - Son Gözden Geçirme: 15 Temmuz 2010 Perşembe - Gözden geçirme: 1.0

Microsoft Dynamics CRM içerisinde İstemci Taraflı Kod Geliştirme

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Özet

Bu resmi kapatBu resmi aç
Buraya tıklayarak Topluluk Çözümleri ve İçeriğiyle İlgili Sorumluluğun Bulunmadığı Hakkındaya ulaşabilirsiniz 



  
 Yazan:Barış Kanlıca  |   Blog:http://www.cub-e.net

Çözüm

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.


Bu tabloyu kapaBu tabloyu aç
1. Genel Değişkenler
DeğişkenAçıklama
SERVER_URLCRM Web Server'ın URL'sini döndürür
USER_LANGUAGE_CODEKullanıcının dil kodunu döndürür
ORG_LANGUAGE_CODEOrganizasyonun dil kodunu döndürür
ORG_UNIQUE_NAMEOrganizasyonun adını döndürür
2. Genel Metotlar
MetotAçıklama
IsOnlineEğer kullanıcı online olarak sistemi kullanıyorsa true döndürür (Outlook client ile ofline kullanma özelliği mevcuttur)
IsOutlookClientKullanıcı Microsoft Dynamics CRM for Outlook ile sisteme ulaşıyorsa true döndürür
IsOutlookLaptopClientKullanıcı Microsoft Dynamics CRM for Outlook with Offline Access ile sisteme ulaşıyorsa true döndürür
3. Genel Olaylar
OlayAçıklama
OnLoadForm 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
OnSaveKullanı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.
Bu tabloyu kapaBu tabloyu aç
1. crmForm Özellikler
ÖzellikAçıklama
AllForm nesneleri kolleksiyonu
IsDirtyFormda değişiklik yapılıp yapılmadığını kontrol etmenizi sağlar. Değer atanabilir.
FormTypeFormun 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
ObjectIdAçılmış olan kaydın GUID cinsinden ID'sini döndürür. Yeni Kayıt olarak açılmış formda null döner.
ObjectTypeNameGörüntülenen nesnenin adı döner
2. crmForm Metotlar
MetotAçı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).

Bu tabloyu kapaBu tabloyu aç
1. crmForm.all Özellikler
ÖzellikAçıklama
Precisioncurrency veri float veri tiplerinde virgülden sonraki digit sayıını verir.
DataValueVeri okunan ve yazılan özellik. picklist ve lookup için ek parametreler almaktadır.
DisabledKullanıcı girişini açmanızı veya kapamanızı sağlar.
ForceSubmitBu özellik disabled edilmiş olan alanların veritabanına kaydedilmesini sağlar. Standartta disabled alanları CRM kaydetmez.
IsDirtyAlan üzerinde değişiklik yapılıp yapılmadığını kontrol etmenizi sağlar.
Mincurrency, float ve integer değer türlerinde erişilebilir en küçük değeri verir.
Maxcurrency, float ve integer değer türlerinde erişilebilir en büyük değeri verir.
MaxLengthstring ya da memo alanlarının en büyük değerini verir.
RequiredLevelGereksinim seviyesini verir
0 = Gereksinim düzeyi yok
1 = Business Recommended (Önerilen)
2 = Business Required (Gereken)
2. crmForm.all Metotlar
MetotAçıklama
SetFocus()Mouse işaretçisini formda o alana gönderir.
FireOnChange()Alanın OnChange() olayını çalıştırır.
crmForm.all Olaylar
OlayAçıklama
OnChangeKullanı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.

Bu tabloyu kapaBu tabloyu aç
crmForm.all.<lookupfiled> Özellikler
ÖzellikAçıklama
IdGUID değeri taşır. Okunabilir ve yazılabilir.
TypeNameReferans edilmiş entity'nin adı. Okunabilir ve yazılabilir.
NameGUID'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;

Bu tabloyu kapaBu tabloyu aç
1. crmForm.all.<picklistfiled> Özellikler
ÖzellikAçıklama
DataValueSeçilmiş olan alanın integer değeri. Okunabilir ve yazılabilir.
SelectedTextSeçilmiş olan alanın text değeri.
GetSelectedOptionSeçilmiş olan değerin option cinsinden değeri.
OptionsPicklist 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
MetotAçı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/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/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%28%29-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/OnSave%28%29-Events-on-Dynamics-CRM---Part-II.aspx)
http://www.cub-e.net/post/Ascentium-CrmService-JavaScript-Library.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/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/CRM-workflow-date-update-includes-saturdays-sundays.aspx)
http://www.cub-e.net/post/Microsoft-Dynamics-CRM-JScript-Export-Tool-JavaScript.aspx (http://www.cub-e.net/post/Microsoft-Dynamics-CRM-JScript-Export-Tool-JavaScript.aspx)





Daha fazla bilgi



Bu resmi kapatBu resmi aç
 Topluluk Çözümleri ve İçeriğiyle İlgili Sorumluluğun Bulunmadığı Hakkında


Topluluk Çözümleri ve İçeriğiyle İlgili Sorumluluğun Bulunmadığı Hakkında

Microsoft Corporation ve/veya tedarikçileri bu sitede yer alan bilgi ve bağlantılı grafiklerin uygunluğu, güvenilirliği veya doğruluğu hakkında hiçbir beyanda bulunmamaktadır. Bütün bu bilgiler ve bağlantılı grafikler, hiçbir garanti verilmeden “olduğu gibi” sunulmaktadır. Microsoft ve/veya tedarikçileri bu bilgilere ve bağlantılı grafiklere ilişkin olarak, ticarete veya belirli bir amaca uygun olduklarına, ustalıkla hazırlandıklarına, mülkiyet hakkı ve ihlal etmemeye ilişkin yasal ve zımni garanti ve hükümler de dahil hiçbir garanti vermemekte ve hiçbir hükmü kabul etmemektedir. Dayanağının sözleşme, haksız fiil, ihmal, kusursuz sorumluluk veya sair bir neden olmasına bakılmaksızın, ve hatta Microsoft veya tedarikçilerinden herhangi biri zararın ortaya çıkma olasılığı hakkında bilgilendirilmiş olsa dahi, Microsoft ve/veya tedarikçilerinin hiçbir koşulda, kullanım imkansızlığı, veri veya kar kaybı da dahil ancak bunlarla sınırlı olmamak üzere bu web sitesinde yer alan bilgi ve bağlantılı grafiklerin kullanılmasından veya kullanılamamasından veya bunlardan biriyle herhangi bir şekilde bağlantılı olarak doğan doğrudan, dolaylı, cezai, özel, arızi, neticede oluşan veya sair hiçbir zarardan sorumlu olmadığını özellikle ve açıkça kabul ediyorsunuz.


























Not Bu, doğrudan Microsoft destek kuruluşu tarafından oluşturulan bir “FAST PUBLISH” makalesidir. Buradaki bilgiler, ortaya çıkan sorunları gidermek üzere olduğu gibi sağlanmaktadır. Mümkün olduğu kadar hızlı sunulmasının bir sonucu olarak malzemelerde yazım hataları bulunabilir ve bunlar bildirimde bulunulmadan daha sonra düzeltilebilir. Diğer hususlar için Kullanım Koşulları (http://go.microsoft.com/fwlink/?LinkId=151500) ’na bakın.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Dynamics CRM 4.0
Anahtar Kelimeler: 
kbmvp KB2283955