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

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.

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
- BigInteger
- Decimal
- Duration
- Integer
- Option
- Code
- Text
- Binary
- Boolean
- Date
- DateTime
- Time
- BigText
- BLOB
- DateFormula
- GUID
- 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.
- Ana (Master) Tablolar: Customer, Vendor, Item
- Tamamlayıcı (Supplemental) Tablolar: Language, Currency
- Kurulum (Setup) Tabloları: General Ledger Setup
- Yardımcı (Subsidiary) Tablolar : Item Vendor, FA Depreciation Book
- Kayıt (Register) Tabloları: G/L Register, Item Register
- Defter (Ledger) Tabloları: Cust. Ledger Entry, Item Ledger Entry
- Günlükler (Journals): Purchase Journal, Item Journal
- Belge (Document) Tabloları: Sales Header / Sales Line
- 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:

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.