cub-e.net

just coding...

Microsoft CRM 3.0 Navigation Bar Öğelerini Form İçinde IFrame İle Göstermek

Microsoft CRM 3.0 Navigation Bar Öğelerini Form İçinde IFrame İle Göstermek

CRM'le çalışırken sol taraftaki Navigation Bar'ı kullanmadan neredeyse hiçbirşey yapamayız. Bunun nedeni ise CRM'de Form üzerinde Navigation Bar içeriğinin default ayarlarda gelmemiyor oluşudur. Fakat küçük bir kod yardımıyla CRM Formlarımızı daha etkin kullanılabilir hale getirebiliriz. Bu makalede Contact (Kişi) kartı üzerine Activities(Aktiviteler)'ler öğesini yerleştirmeyi göreceğiz. Böylece CRM kullanan kişileri birkaç fazla tıklama yapmaktan kurtaracağız. Bunun içi iki adımlı bir yol izleyecegiz. Birinci adımda Formun üzerine IFrame yerleştireceğiz. İkinci adımda ise JavaScript kodu ile dinamik bir şekilde her açılışta IFrame'in adresini değiştirerek açtığımız kart ile ilgili aktivitelerin gelmesini sağlayacağız. Başlayalım;

a) IFrame :

CRM içerisinde; Settings (Ayarlar) -> Customizations (Özelleştirmeler) -> Customize Entities (Varlıkları Özelleştir) adımlarından sonra Contact (İlgili Kişi)  kartına ulaşıyoruz ve bu kartı açıyoruz. Sol taraftaki menüden Forms and Views (Formlar ve Görünümler)'e tıklıyoruz. Formlar öğesini açıyoruz. Aktiviler IFrame'imizi nereye yerleştirmek istiyorsak o tabın altında iken sağ taraftan Add IFrame (IFrame Ekle) yazısına tıklıyoruz. Açılan pencerede;

  1. İsim (Name) kısmına; HistoryFrame yazıyoruz,
  2. URL kısmına; "about:blank" yazıyoruz,
  3. Pass record object-type code and unique identifier as parameters (Kayıt nesne türünü ve tanıtıyıcıyı parametre olarak geçir) kutusunu işaretliyoruz,
  4. Restrict cross-frame scripting  (Komut dosyasını çerçeveler arasında kısıtla) kutusundaki işareti kaldırıyoruz.

Daha sonra tamam'a basıyoruz. İşin birinci kısmı tamamlandı. İkinci kısımda ise JavaScript kodunu yerleştirmek var.

b) JavaScript :

Yine aynı Form üzerinde iken Form Properties (Form Özellikleri) yazısına tıklıyoruz. Açılan küçük pencereden OnLoad (Yüklendiğinde) yazısına çift tıklıyoruz. Açılan pencereye aşağıdaki kodu yerleştirip Tamam'a basıyoruz ve Formu Kaydet ve Kapat düğmesine tıklıyoruz.

function GetFrameSource(tabSet)
{
   
if (crmForm.ObjectId != null)
    {
       
var oId = crmForm.ObjectId;
       
var oType = crmForm.ObjectTypeCode;
       
var security = crmFormSubmit.crmFormSubmitSecurity.value;
       
return "areas.aspx?oId=" + oId + "&oType=" + oType + "&security=" + security + "&tabSet=" + tabSet;
    }
   
else
    {
       
return "about:blank";
    }
}

crmForm.all.IFRAME_HistoryFrame.src = GetFrameSource(
"areaActivityHistory");

Daha sonra Actions (Eylemler) menüsünden Publish (Yayımla) düğmesine tıklıyoruz. Şimdi Contact kartımıza gittiğimizde aşağıdaki görüntü gibi aktivitelerimizi görmeye başlayacağız.

Bu makale de burada biter. Umarım faydalı olmuştur. Hoşçakalın.

Barış KANLICA
Yazılım Uzmanı – Software Specialist
brsk@e-kolay.net
www.cub-e.net


 

CRM içerisinden Java Script kullanarak web sayfası çağırmak

CRM içerisinden Java Script kullanarak web sayfası çağırmak

Makalemizde CRM içerisinden JavaScript kodu kullanılarak, bir web sayfasını çağırmak ve ona işlem yaptırdıktan sonra dönen sonuca göre JavaScript kodundaki işlemlere devam edilmesi işleminin nasıl yapılacağı anlatılacaktır.

Örnek JavaScript kodunda; ürün kartı üzerindeki ürünün Guidi(productid) lookup alanından alınan guidi '/QuoteCalcs/Calcs.aspx' sayfasına parametre olarak gönderiliyor. Sayfa gerekli işlemleri yaptiktan sonra sonucu <baris> xml taglari içerisinde döndürüyor. standart hata kontrollerinde eğer değer "null" veya "false" geliyorsa ekrana uyarı çıkartılıyor (kaydetme işlemi sırasında hata oluşursa kaydetmeyi iptal etmek için "event.returnValue = false;" kodu hata kodundan sonra eklenir), eğer değer var ise gelen değer ilgili alana aktarılıyor. Kodun devaminda çağrılan sayfanın c# script kodu gelmektedir.

var oProduct = document.crmForm.all.productid;
var aProduct = new Array();
aProduct = oProduct .DataValue;
var sProductID = aProduct [0].id;
sProductID = encodeURIComponent(sProductID);
if (sProductID!=null)
{
 var oXmlDoc = new ActiveXObject('Microsoft.XMLDOM');
 oXmlDoc.async = false;
 var path = '/QuoteCalcs/Calcs.aspx?productid=' + sProductID ;
 oXmlDoc.load(path);
 var oNode = oXmlDoc.selectSingleNode('baris');
 if (oNode != null && oNode.text == 'false')
{
  alert(Fiyat getirilirken hata oluştu.');
}
 if (oNode != null && oNode.text != 'false')
 {
  crmForm.all.price.value = oNode.text;
 }
}

c# script ile paremetre alip işlem yapmak; bu kod içerisinde gelen parametrenin boş olup olmadığı kontrol ediliyor. Sonrasında ise CRM'den standart veri çağırma algoritması işliyor. Oluşan sonuçlar ilgili xml tagları ile birleştirilerek dönmeleri sağlanıyor.

<%@ Page Language='c#'%>
<%@ Import Namespace='CrmSdk' %>
<script runat='server'>
protected override void Render(HtmlTextWriter writer)
{
Response.Clear();
Response.ContentType = 'text/xml';
string ProductID = Request.QueryString['ProductID'];
string TYPE = Request.QueryString['Type'];
if (ProductID != null &&
ProductID !='null')
{
CrmService service = new CrmService();
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
QueryByAttribute attributeQuery = new QueryByAttribute();
attributeQuery.ColumnSet = new AllColumns();
attributeQuery.Attributes = new string [] {'productid'};
attributeQuery.Values = new string [] {ProductID};
attributeQuery.EntityName = EntityName.product.ToString();
RetrieveMultipleRequest retrieve = new RetrieveMultipleRequest();
retrieve.Query = attributeQuery;
RetrieveMultipleResponse retrieved = (RetrieveMultipleResponse)service.Execute(retrieve);
if (retrieved.BusinessEntityCollection.BusinessEntities.Length > 0)
{
product prd = (product)retrieved.BusinessEntityCollection.BusinessEntities[0];
if (prd.price!=null)
{
Response.Write('<baris>'+prd.price.Value.ToString()+'</baris>');
}
else
{
Response.Write('<baris>false</baris>');
}
}
else
{
Response.Write('<baris>false</baris>');
}
}
</script>

Bu işlemler sonucunda elimizde bir JavaScript ve bir c# Script kodu oluştu. Notlar kısmında nasıl oluşturulacağı anlatılan Microsoft.Crm.Sdk.Wsdl.dll 'i ile birlikte bütün bunlar ilgili CRM website'inin altında bir 'virtual directory' oluşturacak şekilde yerleştirilir ve IIS restart edilir.

Not:


Microsoft.Crm.Sdk.Wsdl.dll 'ini oluşturmak;

1.    Başlat’a tıklayın, Tüm Programlar’a tıklayın, Microsoft Visual Studio .NET 2003 ‘e tıklayın, Visual Studio .NET Tools ‘a tıklayın, Visual Studio .NET 2003 Command Prompt ‘u tıklayarak açın.

2.    Command Prompt’un içinde referans dosyasını oluşturun, Microsoft.Crm.Sdk.Wsdl.cs, bu işlemi şağıdaki gibi yapabilirsiniz (URL’in sizin Microsoft CRM 3.0 server’ı işaret ettiğinden emin olun):


wsdl.exe /out:Microsoft.Crm.Sdk.Wsdl.cs /namespace:CrmSdk http://<yourserver>/mscrmservices/2006/crmservice.asmx

3 Command Prompt’un içinde, Microsoft.Crm.Sdk.Wsdl.dll ‘ini şu komutu yazarak oluşturabilirsiniz : csc /t:library Microsoft.Crm.Sdk.Wsdl.cs

Artık Microsoft.Crm.Sdk.Wsdl.dll elinizde.


Barış KANLICA

Yazılım Uzmanı – Software Specialist
brsk@e-kolay.net
www.cub-e.net

CRM Metadata Browser

Microsoft Dynamics CRM 3.0 Metadata Browser

Microsoft’un MSDN sitesinde bile Metadata Browser birkaç kelime ile özetlenmiş. Ama bu onun kullanışsız bir araç olduğu anlamına gelmesin. Bu makalemizde Microsoft Dynamics CRM 3.0'ın derinliklerinde gizli kalmış bir aracı ortaya çıkartıyoruz.

Metadata Browser hakkında çok fazla söylenecek bir şey yok. Ama işin ilginç yanı söylenecek çok fazla kelime olmamasına karşın bununla çok tezat bir şekilde çok kullanışlı bir araç. Microsoft’un MSDN sitesinde bile Metadata Browser birkaç kelime ile özetlenmiş (MSDN adresi : http://msdn2.microsoft.com/EN-US/library/aa682837.aspx)
CRM’in 1.2 versiyonunda statik olan bu araç 3.0 versiyonu ile birlikte Dinamik hale geldi ve canlı veri okuma özelliği kazandı.
Bu küçük, kolay kullanımlı arayüze sahip uygulama veritabanı yapısını anlamanıza yarıyor.
Metadata Browser dokümantasyon yapmak istediğinizde veya program yazarken bir şeyleri aradığınızda işlerinizi gerçekten kolaylaştırıyor. Meadata Browser seçilen entity’nin alanlarını, bu alanların uzunluğunu, grid’de yer alıp almadığını, create,update,delete metodlarını destekleyip desteklemediği gibi bir çok bilgiyi kullanıcıya sunuyor. Bunun yanı sıra entity’nin ilişkilerini de gösteriyor.
Metadata bilgisine şöyle ulaşabilirsiniz :
http://crmserverin_ip_si ( :varsa port)/sdk/list.aspx
Standart CRM kurulumu ile birlikte geliyor ve sizin ona erişmek için yapmanız gereken tek şey adresini yazmak oluyor.
Asağıdaki ekran görüntülerinde sırasıyla;

  1.  Metadata Browser’ın ilk açılıştaki ekran görüntüsünü (entitylerin sıralandığı bir yapı ki buarada en güzel özellik bizim açtığımız entity’leri de desteklemesi) ,
  2.  Contact entity’sinin alanlarını ve her bir alanın özelliğini,
  3.  Entity’nin ilişkili olduğu diğer entity’lerin yapısını göreceksiniz.
    Tekrar grüşmek dileğiyle. 



Barış KANLICA
Yazılım Uzmanı – Software Specialist
brsk@e-kolay.net
www.cub-e.net