ms crm

Bu bölüm MS CRM ile ilgili temel bilgileri öğretmeyi amaçlar.

MS CRM 4.0 ekler için dosya boyutu sınırını değiştirmek

CRM 4.0 ekler için dosya boyutu sınırını değiştirmek:

1. Web.config dosyasını açıyoruz (C:InetpubCRMweb.config).

2.    elementi içerisini aşağıdaki gibi değiştiriyoruz (10240 i istediğimiz şekilde değiştirebiliriz)

3. web.config dosyamızı kaydediyoruz.

4. Tarayıcıdan Crm’ i açıyoruz.

5. Ayarlar | Yönetim| Sistem Ayarları kısmına giriyoruz.

6. E-posta sekmesine tıklıyoruz.

7.Maiksimum dosya boyutu kısmını (kilobytes) 10240 yapıyoruz.

9.Tamam butonuna basıp kapatıyoruz.

10. Sonrada IIS i yeniden başlatıyoruz. .

CRM 4.0 Menü ve Kontrolleri Özelleştirme

MS CRM 4.0′ da menü ve kontrolleri 2 yöntem ile özelleştirebiliyoruz:

  • Site Map
  • ISV.Config
Not: Her iki yöntemde de XML yapısını kullanacağımızdan XML ile ilgili temel bilgileri edinmiş olmanız gerekiyor. Eğer XML hakkında daha fazla bilgi edinmek istiyorsanız şuradaki adrese bakmakta fayda var.

Site Map (Site Haritası)

Site haritaları Ms Crm’de her alanda gösterilecek olan nesnelerin yazıldığı xml dosyasıdır. Örneğin çalışma alanındaysanız(workplace area) sol tarafta aktiviteler(activities), takvim(calendar) gibi seçenekler görürsünüz. Bu seçenekler varlıklara(entities) kısa yoldan erişmemizi sağlayan kısayollardır.
Özelleştirmeleri Ver
Özelleştirmeleri Ver
Site haritalarını düzenlemek için öncelikle dışa aktarmalıyız(export). Bunun için ayarlar(setting)>özelleştirme(customization)>export customization’dan sitemap seçilip özelleştirmeleri ver denir. Daha sonra değişikliğimizi yapıp sisteme tekrardan yüklemeliyiz. Site haritasının içerdiği xml’in yapısı aşağıdaki gibidir:
SiteMap: En üst seviyedeki xml etiketidir. Aynı isimde area’ları içeren bir etiket içerebilir.
Area: Her alan(area)’ın kendine has navigasyon butonları bulunur. Varsayılan olarak Site Haritası(SiteMap) 6 tane alan(area) ile beraber gelir. Bunlar:
  • Çalışma Alanı(Workplace)
  • Satış(Sales)
  • Pazarlama(Marketing)
  • Servis(Service)
  • Ayarlar(Setting)
  • Kaynak Merkezi(Resource Center)
Aşağıda Çalışma alanı(Workplace) için varsayılan xml attributeları ve değerleri verilmiştir.
Not: ResourceId ve DescriptionResourceId yerine Title kullanabiliriz.
Bu Attributelardan:
  • Id: Alanın benzersiz tanımlayıcısı.
  • ResourceId: Resource id.(Internal)
  • ShowGroups: Eğer alan birden fazla gurup içeriyor ise zorunludur.
  • Icon: Görsel url adresi.
  • DescriptionResourceId.(Internal)
Group: Alanların içerdiği gurupları ifade eder. Bir veya birden fazla olabilir.

SubArea: Herhangi bir sayfaya veya web adresine gitmek için kullandığımız adrestir.

ISV.Config

ISV.Config dosyası toolbar’a kontrol ekleyebildiğiniz crm’e ekstra özellikler katabilmek için kullandığımız xml dosyasıdır. Varlıklara veya web uygulamalarına hızlı bir şekilde erişmemizi sağlayan kısayollar oluşturabildiğimiz  site haritalarının aksine crm varlıklarından olmayan bir web uygulaması veya 3.parti bir yazılıma erişmemizi sağlayan, kısayollar oluşturmamızı sağlayan xml dosyasıdır. Site haritasındaki gibi önce export edilmeli gerekli değişiklik yapıldıktan sonra tekrar import edilmelidir.

Isv.Config dosyası varsayılan olarak kapalıdır. Xml dosyasındaki değişikliklerin crm’e yansıması için isv.config dosyasının aktif edilmesi gerekir. Bunu:
Ayarlar>Yönetim>Sistem  Ayarları>Özelleştirme tabından  yapabilirsiniz.

Sistem Ayarları

ISV.Config dosyasının içerdiği xml’in yapısı aşağıdaki gibidir:

IsvConfig: sadece etiketini içerebilir. En üst seviyedeki etikettir.
configuration: Versiyon numarasını içerir. Örneğin:
root: Global menü ve toolbar’ları içerir. Örneğin:

           

 

Button: Buton oluşturmamızı sağlayan etikettir. Aşağıdaki etiketleri kapsayabilir:

Buton elementi aşağıdaki attribute’lara sahip olabilir:

  • Client: Bu attribute butonumuzun hangi client uygulamasında görüntüleneceğini belirtir. 2 seçenek vardır. Outlook, web.
  • AccessKey: Butonumuzu faremiz ile değilde klavyemizden tetiklemek için oluşturacağımız kısayoldur. Tek 1 harf alabilir. Alt +{seçtiğiniz harf} şeklinde çalışır. (Alt kısayolu değiştirilemez)
  • AvalibleOffline: Bu attribute outlookta offline çalıştığımız zaman butonumuzun görünüp görünmeyeceğini belirtir.
  • Icon: Bu attribute butonumuzun üzerinde görüntülecek resmi belirtir. (Icon dosyası gif olmalıdır. 16×16 8-bit (256) web için, 16×16 veya 32×32 outlook için)
  • Javascript: Bu attribute butona tıklandıktan sonra çalışacak javascript i belirler. Örneğin:
  • PassParams: O anki varlığın url’ine parametre ekler.
  • Url: Url adresi. Eğer javascript attribute’unda değer varsa bu attribute işlemez.
  • ValidForCreate: Eğer buton bir varlık içerisine konulmuş ise o varlıktan yeni bir kayıt oluşturulduğunda butonun gösterilip gösterilmeyeceğini belirler.
  • ValidForUpdate:  Eğer buton bir varlık içerisine konulmuş ise o varlıktan bir kayıt güncelleniyorsa butonun gösterilip gösterilmeyeceğini belirler.
  • WinMode:
    • 0=Window: Url’i içeren yeni pencere açar.
    • 1=Modal Dialog Box: Yeni pencere açar(kutu şeklinde) ve opencereyi kapatmadan önceki sayfada işlem yapamayız.
    • 2=Modeless Dialog Box: Yeni pencere açar(kutu şeklinde). İstersek kapatmadan önceki sayfaya dönüp işlem yapabiliriz.
  • WinParams: Açılacak olan dialog box’ın boyutunu, yerini ve rengini gibi özelliklerini parametre olarak yollayabileceğimiz parametre. Örneğin:

 Entities: Her varlığın kendi menü ve toolbarı mevcuttur. Ondan dolayı eğer biz varlığa menü ve toolbar itemi eklemek istiyor ise isv.config dosyasında bu varlığı belirtmek zorundayız. Örneğin:

Not: Title daki LCID kodu dil kodudur. 1055 türkçe dil kodudur.

Node.js için faydalı modüller: Nodemon ile web server’ı otomatik yeniden başlatma

Node.js kullanırken en büyük sıkıntılardan biri de değişikliklerin aktif olması için server’ı sürekli yeniden başlatmak zorunda kalmamızdı. İşte nodemon bizi bu sıkıntıdan kurtaran bir modül. Klasörlerimizi izleyip bir değişiklik gördüğü anda kendisi otomatik olarak server’ımızı yeniden başlatıyor bizi manual olarak yeniden başlatma derdinden kurtarıyor. Benim de sürekli kullandığım vazgeçilmez modüllerden 😀  Github adresi için tıklayınız. Öncelikle kurmak için node konsoluna:

-npm install nodemon  

yazmamız yeterli . Daha sonra server’ımızı node app.js ile değil de
-nodemon app.js ile başlatmamız yeterli. Nodemon artık uygulamamızı izleyecek ve herhangi bir dosyada bir değişiklik gördüğünde otomatik olarak server’ımızı yeniden başlatacaktır.

Regular Expression Debugger ile Regex patternlerinizi debug edin

Her yazılımcının olmassa olmazı Regular Expression. İster küçük bir regex isterseniz kompleks bir regex patterni kullanıyor olun. Patterninizi test/debug etmenize  yarayan gerçek zamanlı bu siteye buradan erişebilirsiniz.
Siteye girdiğiniz zaman aşağıdaki gibi bir ekran ile karşılaşacaksınız.

Sol taraftan Javascript’ i seçip  “REGULAR EXPRESSION”  kısmına istediğimiz regex patternini “TEST STRING” kısmına ise test etmek istediğimiz stringi yazıyoruz. Ve web uygulaması gerçek zamanlı olarak patternimizi debug edip test stringi üzerinde sonucu gösteriyor. Sağ taraftaki “EXPLANATION” kısmında ise patternimizin tek tek ne işe yaradığını gösteriyor.

Site Adresi: http://regex101.com/

Mssql pivot table kullanımı.

Karşılaştığım sorgularda fark ettiğim olay pivot kullanılmaması. Örnek olması açısından paylaşmak istedim. Aşağıda aynı sonucu veren 2 tane query var biri pivot kullanılarak biride kullanılmayarak hazırlanmış. Sonuçlar aynı tatbikî. Ama pivot kullanmadan aşağıdaki sonucu almak için iki kat fazla sorgu yazılmış. Geri dönüp bakıldığında anlaşılması çok zorlaşıyor.  Örnekte adventurework veri tabanı kullandım.
Sonuç:
 
Pivot Kullanılmadan
SELECT Table1.ShiftName
      ,SUM(Table1.Production) AS Production
      ,SUM(Table1.Engineering) AS Engineering
      ,SUM(Table1.Marketing) AS Marketing
FROM (
      SELECT S.NAME AS ShiftName
            ,COUNT(H.BusinessEntityID) AS Production
            ,0 ASEngineering
            ,0 AS Marketing
      FROM HumanResources.EmployeeDepartmentHistory H
      INNER JOINHumanResources.Department D
            ON H.DepartmentID = D.DepartmentID
      INNER JOINHumanResources.Shift S
            ON H.ShiftID = S.ShiftID
      WHERE H.EndDate IS NULL
            AND D.NAME = ‘Production’
      GROUP BY S.NAME
     
      UNION ALL
     
      SELECT S.NAME AS ShiftName
            ,0 ASProduction
            ,COUNT(H.BusinessEntityID) AS Engineering
            ,0 AS Marketing
      FROM HumanResources.EmployeeDepartmentHistory H
      INNER JOINHumanResources.Department D
            ON H.DepartmentID = D.DepartmentID
      INNER JOINHumanResources.Shift S
            ON H.ShiftID = S.ShiftID
      WHERE H.EndDate IS NULL
            AND D.NAME = ‘Engineering’
      GROUP BY S.NAME
     
      UNION ALL
     
      SELECT S.NAME AS ShiftName
            ,0 ASProduction
            ,0 ASEngineering
            ,COUNT(H.BusinessEntityID) AS Marketing
      FROM HumanResources.EmployeeDepartmentHistory H
      INNER JOINHumanResources.Department D
            ON H.DepartmentID = D.DepartmentID
      INNER JOINHumanResources.Shift S
            ON H.ShiftID = S.ShiftID
      WHERE H.EndDate IS NULL
            AND D.NAME = ‘Marketing’
      GROUP BY S.NAME
      ) Table1
GROUP BY Table1.ShiftName
Pivot kullanılarak
SELECT * FROM (SELECT S.NAME AS ShiftName
      ,H.BusinessEntityID
      ,D.NAME DepartmentName
FROM HumanResources.EmployeeDepartmentHistory H
INNER JOIN HumanResources.Department D
      ON H.DepartmentID = D.DepartmentID
INNER JOIN HumanResources.Shift S
      ON H.ShiftID = S.ShiftID
WHERE H.EndDate IS NULL
      AND D.NAME IN (
            ‘Production’
            ,‘Engineering’
            ,‘Marketing’
            )
)AS a
PIVOT
(
COUNT(BusinessEntityID)
FOR DepartmentName IN ([Production],[Engineering],[Marketing])
)AS b

Node.js uygulama yapınızı geliştirin

Stackoverflow’da node.js başlıklarını gezerken karşılaştığım. Sürekli node.js ile ilgili sorularıma sabırla cevap veren Peter Lyons’dan express projenizi nasıl profösyönel olarak yapılandıracağınıza dair tavsiyeler. Kesinlikle okunması gerekiyor. Hele ki benim gibi node.js dünyasına yeni adım attıysanız.Projesini Github’a atmış birde arkadaş
Stackoverflow Adresi
Github adresi

C# Object Initializer Özelliği

Gereklilikler:Properties, new kavramı, reference types ve value types, contructions, object kavramı, auto implement properties gibi konuların bilinmesi konunun anlaşılması için gerekmektedir.

Bu dersimizde C# 3.0 ile gelen özelliği olan Object Initializer özelliğini inceliyeceğiz. Örnek olarak İnsan isimli classımızı ele alalım.

class Insan{      

public string Adi { get; set; };      

public int Yasi { get; set; };

}

Şimdi C# 2.0 ile Insan isimli classımızın bir örneğini oluşturup(instantiate) özelliklerine(properties) değer atamak için aşağıdaki kodu yazmamış gerekli.

Insan insan = new Insan();
insan.Adi="Fuat";
insan.Yasi="21"; 
 

C# 3.0 Object Initializer Syntax  ile yukarıdaki kodu daha anlaşır, daha temiz ve daha kısa bir şekilde yazabiliriz.

Insan insan = new Insan{ Adi="Fuat", Yasi="21"};

İşi biraz daha kompleks hale getirelim. Ve Insan isimli classımızı güncelliyelim ve bir class daha ekliyelim.

 
class Insan
{
      public string Adi { get; set; };
      public int Yasi { get; set; };
      public Fizik Fiziksel  { get; set; };
}
class Fizik
{
      public int Boy  { get; set; };
      public int Kilo  { get; set; };


}


Şimdi C# 2.0 da Insan nesnesinin örneğini oluşturup properties alanlarına değer atıyalım.

   Insan insan = new Insan();

insan.Adi="Murat";
insan.Soyadi="Tatar";
insan.Fiziksel = new Fizik();
insan.Fiziksel.Boy=176;
insan.Kilo=65;
Şimdi ise bunu C# 3.0 Object Initializer ile yapalım. Biraz kompleks gibi gelebilir ama mantığı çok basit.
 
Insan insan = new Insan
{
   Adi="Murat",
   Soyadi="Tatar",
   Fiziksel= new Fizik
     {
         Boy=176;
         Kilo=65;      
     }
};
 
Tek satır olsun daha güzel gözüksün diyorsanızda:
Insan insan = new Insan {Adi="Murat", Soyadi="Tatar", Fiziksel= new Fizik{Boy=176; Kilo=65;} };

 

Adım Adım Visual Studio 2010 Performansını Artırma

Malum bilgisayarım eski olduğu için bu meseleye çok kafa yordum zamanında ve sizlerle nasıl visual studio 2010 hızlandırılır paylaşmak istiyorum. Hızlandırmak için malesef bazı visual studio özelliklerinden feragat etmek zorundayız. Ayarları yaparken dikkate almanız gereken bu özelliğe benim ihtiyacım varmı olmalı. Başlayalım. 



















Visual Experience altındaki tüm seçenekleri iptal ediyoruz.

Setting deki Track Changes seçeneğini iptal ediyoruz.

 

Default view daki “Always open documents in full XAML view ” seçeneğini iptal ediyoruz. (Wpf ve Silverligh kullanıyorsanız başlangıçta visual studio hızlanması için bu çok önemli)



















Project and Solutions daki “Track Active Item in Solution Explorer ” seçeneğini iptal ediyoruz.



















Startup daki at startup seçeneğini “Show Emty Enviroment At Startup ” olarak değiştiriyoruz. (Visual studio 2010 un başlangıçta hızlı açılması için bu seçenek çok önemlidir)



















Build and Run içerisindeki ” Only build startup projects and dependencies on Run ” seçeneğini aktif hale getiriyoruz.



















IntelliTrace seçeneğini iptal ediyoruz. Herşeyi resimdeki gibi yaptıysanız bayağı hız kazanmış olucak visual studiomuz. Yapamadığınız veya göremediğiniz bir seçenek olursa yorum yazmayı unutmayın lütfen.