Makale Özeti

Dynamics AX'in hayatımızı kolaylaştıran özelliklerinden birisi de numara serileri'dir. Numara serileri ile metin formatında, birbirini takip eden sayılar üretebilir ve tablolarımızda birincil anahtar olarak kullanabiliriz. Bu özellik SQL Server tablolarında alanlar için kullandığımız AutoIncrement özelliğinin gelişmiş halidir. Örnegin satış siparişi numarasının "STS######" formatında olmasını son kullanıcı belirleyebilir.

Makale

Dynamics AX'in hayatımızı kolaylaştıran özelliklerinden birisi de numara serileri'dir. Numara serileri ile metin formatında, birbirini takip eden sayılar üretebilir ve tablolarımızda birincil anahtar olarak kullanabiliriz. Bu özellik SQL Server tablolarında alanlar için kullandığımız AutoIncrement özelliğinin gelişmiş halidir. Örnegin satış siparişi numarasının "STS######" formatında olmasını son kullanıcı belirleyebilir.

Sisteme yeni bir numara serisi eklemek için öncelikle bu numara serisini ifade eden gelişmiş veri tipi (Extended Data Type) yaratmalıyız. Makalemizde örnek olarak şirketimizdeki araçların listesini tutan bir uygulama yazacağız. Dolayısıyla AracNo adında, string tipinde yeni bir gelişmiş veri tipi yaratalım.

 

Bu aşamada numara serisini hangi modül içerisinde kullanacağımıza karar vermeliyiz. Numara serilerini yaratan sınıflar NumberSeqRefence sınıfından türerler ve modül bazında ayrılmışlardır. Örnek isimlendirme NumberSeqRefence_<ModulAdi> şeklindedir. Biz örneğimizi olarak 'Stok Yönetimi' modülünde geliştirelim. Stok yönetimiyle ilgili numara serilerinin yaratıldığı sınıf NumberSeqReference_InventoryManagement 'dır. AOT üzerinde ilgili sınıfı bulalım ve loadModule metodunu açalım.

 

İlgili metodun içindeki kodun sonuna kendi numara serimizle ilgili kodu ekleyelim :

 

Bundan sonraki aşamada son kullanıcı ilgili numara serisinde kullanılacak formatı belirleyebilir. Dynamics AX'nın ana menüsünden 'Temel / Yönetim / Referanslar' formunu açtığınızda "Araç No" değerinin de numara serilerine eklendiğini göreceksiniz. Fakat numara serisini belirleyen özellikleri tanımlamak için "Numara Serisi" formuna gitmelisiniz. Bunun için ilgili kayıttaki numara serisi alanına sağ tıklayın ve Ana Tabloya Git seçeneğini işaretleyin.

 

Bu ekranda yeni bir numara serisi tanımlıyoruz. Örneğin araç kodumuzu "ARC######" formatında tanımlayalım. Bu formatta kullanılan # işareti yerine Axapta tamsayı atayacaktır. Örn : ARC00001, ARC00002.. gibi.

 

Şimdi Referanslar tablomuza geri dönüp, eklemiş olduğumuz ARC numara serisini, AraçNo ile ilişkilendirelim. Artık AraçNo tipi ile numara serilerinden numara istediğimizde, ARC###### formatında sıralı numaralar alabiliriz.

 

Numara serisinin kullanımı

Sistemde halihazırda bulunan, tanımlamaları yapılmış bir numara serisininden numara almak ise 2 satırlık bir iştir. Örneğin Araçlar tablomuz olsun ve tablonun birincil anahtarı da AracNo alanı olsun. AracNo alanının numara serisinden numara almasını istersek, tablonun initValue() metoduna aşağıdaki kodu ekleyebiliriz :

NumberSeq numberSeq = NumberSeq::newGetNum(NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(AracNo))));
this.AracNo = numberSeq.num();

 

Anıl Özay
Bilgisayar Mühendisi
MVP Dynamics AX