Hatalı ve Yanlış girişleri engellemek ve Reguler Expressions

Müşteri ilişkilerini önemseyen bir firmada müşteri telefonları ve e posta adresleri büyük önem taşır.

Ve tablolarımızda kullandığımız ilgili alanların sadece zorunlu olması kullanıcılarımızı doğru bilgi girmesini sağlamaya yetmez.

Özellikle anlamsız bilgi girenler için ayrı bir paragraf açmalıyız çünkü bu konuda gerçekten yaratıcı bir millet olduğumuzu ifade etmeliyim. Bir müşterimizde CRM modülündeki telefon numaralarının ortalama olarak %30’u aynı numaralardan oluştuğuna şahit olmuştum. Muhtemelen e posta adresleri için de durum pek iç açıcı değildir. Ayrıca Türkiye’nin öne gelen kargo firmalarından birinde her kargo göndermemde TC kimlik numarası alanının varsayılan bir değer ile doldurulduğunu görüyorum. Bu tür girişler konumuzun biraz dışında, devam edelim…

Hatalı girişleri engellemek adına, daha kontrollü girişler sağlamak, daha doğru bilgi elde etmemizi sağlayabilir. Bu işlem için de Reguler Expressions ya da kısa adıyla Regex kullanmak çok faydalı olabilir. Regex, özetle bir alana girilecek olan olası bilgilerin formatını belirlemek için kullanılabilir. Buna terminolojide genellikle “maskeleme” denmektedir. Daha detaylı bilgi için tıklayınız.

konumuza dönersek; örneğin için Türkiye’deki sabit telefon numaraları için şehirler arası kodlar 02, 03 ya da 04 ile başlamaktdır. Batı illeri 02, orta kısım 03, doğu ise 04 olarak kodlanmıştır. Bunun haricinde tüm Türkiyede telefon numaraları toplam 11 hanedir. Şimdi bu bilgileri kontrol etmek için nasıl bir Regex kullanabiliriz?

Okumaya devam et

X++ ile XML dosyasını okuma

Xml (eXtensible Markup Language) veri alışverişi için sıkça kullanılan bir yöntemdir. W3C tarafından geliştirilmiş ve hemen hemen tüm platformlarda kabul görmüş bir formattır. XML ile ilgili daha detaylı bilgiler için tıklayınız.

Gelelim konumuz olan X++ ile XML dosyalarının nasıl okunabileceğine;
XML dosyalarını okumak için XMLDocument, XMLNodeList, XMLNode, XMLParseError classlarını kullanabiliriz.
XmlDocument en temel classtır ve pek çok alt class ve işlev içermektedir.
İçeriğini okumak istediğimiz düğüm (node) adını doğrudan belirtmek mümkün olabileceği gibi, nextSibling() metodu da kullanılabilir.
Ama düğüm adını belirtmek ihtiyacımızı daha iyi karşılayacaktır.
Parametrik yapılar kurmak gerektiğinde bu düğüm adlarını bir parametre tablosunda tutmak daha doğru olacaktır.

Okumaya devam et

.NET kütüphanelerini AX içinde kullanırken istisna yönetimi (Exception Handling)

Bir süre önce .NET veri tiplerinin AX içinden kullanılması ile ilgili bir yazı paylaşmıştım. İlgili yazıda herşeyin yolunda gittiğini varsaymıştık.

Elbette gerçek uygulamarda bu durum aynen gerçekleşmeyebilir. Örneğin bir değişkene bir değer atamak istediğinizde anlamsız bir hata alabilir ya da bir web servisi çağırdğınızda hiçbir cevap alamayabilirsiniz.

Ax içindeki istisna yönetimi (Exception Handling) varsayılan olarak Ax içindeki istisnaları yakalar ve gösterir. Eğer .NET ile ilgili istisnaları yakalanız gerekirse alttaki gibi bir kod bloğunu kullanabilirsiniz:

Okumaya devam et

.NET veri tiplerinin AX içinden kullanılması

Geçenlerde bir arkadaşım alttaki gibi bir soru sordu. Soru özetle şöyle : .NET içinde yapılan bir işlemin aynısını AX’ta nasıl yapabiliriz. Bu sıkça karşılaşılan bir durum, çünkü AX ile .NET’in birlikte kullanılması gereken pek çok uygulama mevcut. Ax içinde System.xxx ile .Net kütüphaneleri kullanılabilir. Kullanımda biraz farklar olmakla beraber genel mantık aynıdır. Ancak .NET tiplerinin ISerializable interface’ini desteklemesi gerektiğinden, bir .NET nesnesi AX nesnesine direk atanabilirken, bir AX nesnesi genellikle .NET nesnesine direk atanamaz.

Soru alttaki gibi:

 

Okumaya devam et

.NET Business Connector Reset

Eğer AX ile dış ortamlar arasında bir entegrasyon üzerinde çalışıyorsanız, AX tarafında değiştirdiğiniz kodların Business Connector (BC) tarafında yenilenmediğini ve hala eski şekli ile çalıştırıldığını görürsünüz. Bunun temel nedeni AOS’un kod performansını artırmak üzere kullandığı önbellek (cache) mekanizmasıdır. Canlı kullanımda olan bir projede normal olsa da, development esnasında oldukça sıkıntı veren bu durumu atlatmak için alttaki çözümü deneyebilirsiniz.

Bir web servisi yayınladıktan sonra, her değişiklik yaptığınızda alttaki adımları izleyin:

Okumaya devam et

Ax içinden web service kullanımı – Web Services in Ax

Öncelikle Web Service(WS)in ne olduğuna dair küçük bir bilgilendirme yapmalıyız.

WS, bir sunucu üzerinde barındırılan bir programın internet üzerinden istemcilere kullandırılmasını sağlayan yapının adıdır. Kullanılan en temel bileşenler HTTP, WSDL, SOAP ve UDDI olarak sıralanır. WS’ler dış dünya ile iletişimin en temel yöntemlerinden biridir. Örneğin günlük kur değerlerini almak için merkez bankasının web servisi kullanılarak kurlar otomatik güncellenebilir, satıcının web servisi kullanılarak siparişin durumu takip edilebilir, kargo firmalarında gönderinin nerede olduğunu sorgulamak üzere basit web servisler kullanılır vs.

Daha detaylı bilgi için : http://www.w3schools.com/webservices/default.asp ya da http://en.wikipedia.org/wiki/Web_service linklerini takip edebilirsiniz.

Dynamics AX içinden de tıpkı .NET’de olduğu gibi WS kullanılabilir. Bu konuyu test edebilmek için örnek bir WS’e ihtiyacımız var ki bu amaçla http://www.w3schools.com/webservices/tempconvert.asmx‘i kullanabiliriz. Bu WS celcius – fahrenheit derece dönüşümünü sağlayan basit ama güzel bir WS’tir.

Okumaya devam et

.Net ile Ax tablolarına erişmek ve formda göstermek

Konu konuyu açıyor derler ya, bir önceki yazıdan sonra bu yazıyı yazmak uygun geldi. Zira soruda Ax verisine ulaşmak, yeni kayıt ya da güncelleme sorulmakta idi. Bu yazımızda önce veriye bir erişelim, bir sonrakinde de update işlemine bakarız.

Visual studio’yu açıp Yeni Proje Windows Forms Application seçelim. Projemizin adı bcTest olabilir. Projemizin referanslarına Microsoft.Dynamics.BusinessConnectorNet’i eklememiz gerekecektir. Bu DLL Ax Client’ınızın kurulu olduğu klasörde Bin’in içindedir. (Örneğin benim bilgisayarımda C:Program Files (x86)Microsoft Dynamics AX50ClientBin Microsoft.Dynamics.BusinessConnectorNet.DLL olarak bulunuyor.) Projenizin References düğümüne sağ tıklayıp Add Reference seçin ve açılan pencereden BusinessConnectorNet.DLL’i ekleyin.

Okumaya devam et

.Net kullanılarak Ax içinde kayıt oluşturmak mümkün mü

Ali Ak beyin sorusu üzerine:
“Sanırım konu Dynamics Ax AIF ile ilgili ama dışarıdan c# ile yazılan bir exe ile Dynamics Ax’ta satınalma siparişi açabilir miyiz veya satınalma kabulu yapabilir miyiz?”
Cevap en genel anlamda evet. Yöntem olarak isterseniz AIF kullanabileceğiniz gibi daha basit olarak .Net Business Connector de kullanabilirsiniz. AIF XML tabanlı bir veri transferi platformudur ve arka planda yine .Net Business Connector kullanır.

Alttaki çok basit kod ile .NET ile Ax arasındaki ilişkiyi anlamak mümkün olacaktır. Daha detaylı bilgi için ilk fırsatta bir makale yazacağım.

Okumaya devam et