Makale Özeti

Merhaba arkadaşlar, Bu yazıda, Microsoft Dynamics NAV (Navision) programının Temel yapısını anlatırken değindiğim tabloların yapıları,türleri ve konvansiyonu ile bu tabloların lisans aralıkları ile ilgili konuları biraz daha ayrıntılı açıklamaya çalışacağım.

Makale

Nav_Tablolar

Merhaba arkadaşlar, Bu yazıda, Microsoft Dynamics NAV (Navision) programının Temel yapısını anlatırken değindiğim tabloların yapıları,türleri ve konvansiyonu ile bu tabloların lisans aralıkları ile ilgili konuları biraz daha ayrıntılı açıklamaya çalışacağım.

Standart Tablolar

Bir C/SIDE tablosu, tablonun tanımı ile veriyi saklayan satır ve sütunlardan oluşur. Tablonun tanımı son kullanıcıya görünür değildir. Bir tablo yarattığınızda buna gerekli olan ID ve adını tanımlarsınız. Aşağıdaki örnek 6 numaralı tablonun tasarım ekranına aittir.

Nav_Tablo_Tasarimcisi

 

Tabloyu yarattıktan sonra seçilmesi gereken alan no, ad ve veri türleri de tablo tanımının içindedir. Tablo veri türleri

  1. BigInteger
  2. Decimal
  3. Duration
  4. Integer
  5. Option
  6. Code
  7. Text
  8. Binary
  9. Boolean
  10. Date
  11. DateTime
  12. Time
  13. BigText
  14. BLOB
  15. DateFormula
  16. GUID
  17. TableFilter

Bu türler ile ilgili açıklamalara “C/SIDE Reference Guide” üzerinden erişebilirsiniz. Temel yapıyı anlatırken bazı Standart Tablo türlerinden bahsetmiştim. Bunlar Belgeler, Günlükler ve Defter Girişi tabloları idi. Navision konvansiyonunda aşağıdaki tablo türleri kullanılmaktadır. Yeni bir geliştirme yapan Programcıların bu konvansiyonu göz önünde bulundurmaları gerekir.

  1. Ana (Master) Tablolar: Customer, Vendor, Item
  2. Tamamlayıcı (Supplemental) Tablolar: Language, Currency
  3. Kurulum (Setup) Tabloları: General Ledger Setup
  4. Yardımcı (Subsidiary) Tablolar : Item Vendor, FA Depreciation Book
  5. Kayıt (Register) Tabloları: G/L Register, Item Register
  6. Defter (Ledger) Tabloları: Cust. Ledger Entry, Item Ledger Entry
  7. Günlükler (Journals): Purchase Journal, Item Journal
  8. Belge (Document) Tabloları: Sales Header / Sales Line
  9. Belge Geçmişi (Document History): Sales Invoice Header / Sales Invoice Line

Navision tablolarını her zaman nesne tasarımcısı üzerinden oluşturun, SQL Server üzerinden oluşturduğunuz takdirde Navision yapısına dahil edemeyeceksiniz.

NAV veritabanını SQL Server Management Studio ile açtığınızda tabloların şirket bazında açıldığını göreceksiniz. Örnek olarak Müşteri tablosu “CRONUS Danmark A_S$Customer” gibi bir isimle karşınıza çıkacaktır. Yeni bir şirket açtığınızda, Şirket bazlı tablolar otomatik olarak oluşur. Bir Tablonun şirket bazlı olup olmamasını, Tablo Tasarımcısındaki “DataPerCompany” özelliğini kullanarak değiştirebilirsiniz.

Örnekte belirttiğim Müşteri tablosunun ortak kullanıldığı bir senaryo düşünelim. Aynı müşteri bilgilerine ulaşmak isteyen bir Şirketler Grubunun veritabanı tasarlanıyor olsun. Bu tablo bir Ana tablo olduğu için, onun “DataPerCompany” özelliğini kapatmak yeterli olmayacaktır. Müşteri ile alakalı bütün tablolarda da bu işlemi yapmak gerekecektir. Ayrıca Diğer Tablolardan veri gösteren Flowfield alanlar da sorun yaratacaktır. Böyle bir durumda ayrı bir Ortak Müşteri Tablosu yaratıp verileri senkronize etmek daha güvenli bir yöntem olacaktır. Şunu da belirtmek gerekir ki, Sistemin kendi tabloları üzerinde değişiklik yapmak, upgrade zamanı geldiğinde programcılara ek iş yükü çıkaracaktır. Add-on mantığında yeni objeler yaratmak her zaman daha doğru yöntemdir.

Diğer Tablolar

C/SIDE üzerinde kodlama yaparken Standart tablolar dışında aşağıdaki 3 türden tablo türünü de kullanmanız gerekecektir.

  • Geçici tablolar
  • Sistem tabloları
  • Sanal tablolar

Sanal tablolar Navision çalışırken bellekte oluşturulur ve veri görüntülemeye yarar. Ancak Sanal tablolardaki verileri değiştiremezsiniz. Örnek olarak Integer Sanal Tablosu –1,000,000,000 ile 1,000,000,000 arasındaki sayıları tutan bir adet alandan ibarettir. Bu tabloyu genellikle Rapor oluştururken sayfalarla ilgili özel işlemler yapacaksanız kullanırsınız.

Microsoft Dynamics NAV 2009 R2 ilk kurulduğu zaman uygulama tarafından otomatik oluşturulan tabloların listesi aşağıdaki gibidir.

  • 2000000001 Object
  • 2000000007 Date
  • 2000000009 Session
  • 2000000010 Database File
  • 2000000020 Drive
  • 2000000022 File
  • 2000000024 Monitor
  • 2000000026 Integer
  • 2000000028 Table Information
  • 2000000029 System Object
  • 2000000037 Performance
  • 2000000038 AIIObj
  • 2000000039 Printer
  • 2000000040 License Information
  • 2000000041 Field
  • 2000000042 OLE Control
  • 2000000043 License Permission
  • 2000000044 Permission Range
  • 2000000045 Windows Language
  • 2000000046 Automation Servers
  • 2000000047 Server
  • 2000000048 Database
  • 2000000049 Code Coverage
  • 2000000050 Windows Object
  • 2000000052 Windows Group Member
  • 2000000053 Windows Access Control
  • 2000000055 SID - Account ID
  • 2000000056 User SID
  • 2000000058 AllObjWithCaption
  • 2000000059 Breakpoints
  • 2000000063 Key
  • 2000000070 Error List

Bu tabloların bazıların sanal tablolardır, bazıları ise veritabanında fiziksel olarak yer kaplar. Kullanıcı, rol ve izinlerle ilgili tablolar fiziksel olarak bulunan tablolara örnektir. Bu tabloların içeriğini görmek için Nesne Tasarımcısından yeni bir Form yaratıp bütün alanları ekleyerek önizleme yapabilirsiniz. Örnek olarak, Windows Language tablosunun önizlemesi aşağıdaki gibidir:

NAV_Windows_Language

Navision Veritabanında tüm nesneler ve bunların tanımları 2000000001 numaraları Object (Nesne) tablosunda tutulur. Bu tabloya NAV nesne tasarımcısından erişmeniz mümkün değil, sadece SQL Server ile tabloyu açabilirsiniz. Nesnelerin Kaynak kodları “BLOB Reference” isimli bir BLOB alanda bulunmaktadır, dolayısıyla kaynak kodlarını direk buradan değiştiremezsiniz.

Tabloların Numaralaması

Dünya genelindeki yazılımcılar, zamanlarının %80’ini mevcut yazılımların bakımı ile ilgili çalışarak geçirmekteler. Navision Programında bu rakam daha yüksek bile olabilir. Bir Navision Programcısı, zamanının büyük çoğunluğunu başkalarının yarattığı nesneler üzerinde geliştirme veya bakım/iyileştirme yaparak geçirecektir. Dolayısıyla Nesnelerin versiyonu, en son kim tarafından hangi kısımlarının değiştirildiği gibi bilgiler çok önemlidir ve mutlaka düşülmelidir.

Navision Programlaması doğrudan hangi nesne üzerinde ne kadar yetkiniz olduğuyla alakalıdır. Nesneleri doğrudan anlatan özellikleri de numaralarıdır.

Navision tabloları aşağıdaki yapıya göre numaralandırılırlar:

 

 Tablo No Açıklama Yorum
1 - 9,999 Standart Uyulama Nesneleri Geliştirici lisansı ile bu nesneleri değiştirebilirsiniz ancak bu numara aralığında yeni nesne yaratamazsınız.
10,000 - 49,999 Ülke/Bölge Nesne aralığı Lisansınızda bu Ülke/Bölge ile ilgili yetki varsa Geliştirici lisansı ile nesneleri değiştirebilirsiniz ancak bu numara aralığında yeni nesne yaratamazsınız.
50,000 - 99,999 Müşteri aralığı Geliştirici lisansı ile bu aralıkta nesne ekleyebilir ve değiştirebilirsiniz. Kullanıcı Lisansı ile de eğer tablo satın alındıya işlem yapabilirler.
100,000 - 999,999,999 Partner/add-on aralığı Lisansınızda add-on lar ile ilgili yetki varsa Geliştirici lisansı ile nesneleri değiştirebilirsiniz ancak bu numara aralığında yeni nesne yaratamazsınız. Add-on lar için genelde sadece çalıştırma yetkisi verilir.
2.000,000,000 – 2,999,999,999 Sistem Nesneleri Bu nesneleri değiştiremezsiniz ve yeni nesne yaratamazsınız.

 

Tablo Alanlarının Numaralaması

Tablodakine benzer bir numaralama sistemi ilgili alanlarda da mevcuttur.

Tablo No

Alan No

Açıklama

Yorum
1 - 9,999 1 - 9999 Standart Uyulama Nesneleri Geliştirici lisansı ile bu alanları değiştirebilirsiniz ancak bu numara aralığında yeni alan yaratamazsınız.
1 - 9,999 10,000 - 49,000 Ülke/Bölge Nesne aralığı Lisansınızda bu Ülke/Bölge ile ilgili yetki varsa Geliştirici lisansı ile alanları değiştirebilirsiniz ancak bu numara aralığında yeni alan yaratamazsınız.
1 - 9,999 50,0000 - 99,999 Müşteri aralığı Bu aralıkta alan ekleyebilir ve değiştirebilirsiniz.
1 - 9,999 100,000 - 999,999,999* Partner/add-on aralığı Alanlar sadece yetkili Partner tarafından eklenebilir veya değiştirilebilir.
10,000 - 49,999 1 - 49,999 Ülke/Bölge Nesne aralığı Lisansınızda bu Ülke/Bölge ile ilgili yetki varsa Geliştirici lisansı ile alanları değiştirebilirsiniz ancak bu numara aralığında yeni alan yaratamazsınız.
10,000 - 49,999 50,000 - 99,999 Müşteri aralığı Bu aralıkta alan ekleyebilir ve değiştirebilirsiniz.
10,000 - 49,999 100,000 - 999,999,999 Partner/add-on aralığı Alanlar sadece yetkili Partner tarafından eklenebilir veya değiştirilebilir.
50,000 - 99,999 1 - 999,999,999 Müşteri aralığı Bu aralıkta alan ekleyebilir ve değiştirebilirsiniz.
100,000 - 99,999,999 1 - 9,999 Partner/add-on aralığı Alanlar sadece yetkili Partner tarafından eklenebilir. Lisansınızda bu add-on aralığı ile ilgili yetki varsa Geliştirici lisansı ile alanları değiştirebilirsiniz
100,000 - 99,999,999 10,000 - 49,999 Ülke/Bölge Nesne aralığı Lisansınızda bu Ülke/Bölge ile ilgili yetki varsa Geliştirici lisansı ile alanları değiştirebilirsiniz ancak bu numara aralığında yeni alan yaratamazsınız.
100,000 - 99,999,999 50,000 - 99,999 Müşteri aralığı Bu aralıkta alan ekleyebilir ve değiştirebilirsiniz.
100,000 - 99,999,999 100,000 - 999,999,999 Partner/add-on aralığı Alanlar sadece yetkili Partner tarafından eklenebilir veya değiştirilebilir.

* Arada standart nesneler de bulunuyor

Müşteri aralığında tablo ekleme yetkisi, lisans üzerinde yazan rakam ile sınırlıdır. Bu rakam lisanslama tipine göre değişmekle beraber, genelde 10 adettir. Yani müşteri lisans aralığında bir add-on yazmak, sınırı rahatlıkla aşacağı için firmaya ek maliyet olacaktır. Partner firmalar böyle durumlarda geliştirmeyi kendi lisans aralığına çekerler ve müşteriye bu add-on u çalıştırmak için lisansında ek izin sağlarlar.

Tablolar ve lisanslamasıyla ilgili anlatacaklarım bu kadar. Umarım faydalı olmuştur.