X++ :15- ValidateField Metodu Ne İşe Yarar?
  1. Anasayfa
  2. Dynamics 365

X++ :15- ValidateField Metodu Ne İşe Yarar?

0

Bu yazıda Dynamics 365 Finance and Operations tablo metotlarından validateField() metodunu anlatacağım. validateField() bir alanın verisi değiştirildiğinde doğrulamaların yapıldığı metottur. Metodun tetiklenmesi için alandan odağın çıkması gerekir. Bir örnek yapalım.

FDBookTable tablosunda metotlara sağ tıklayıp validateField () metodunu Override ettim.


Resim-1

Metoda parametre olarak alan kodu geliyor ona bağlı bir Switch Case yazdım. BookCount Sıfır olarak güncellenmeye çalışıldığında hata verdin diye bir kod yazdım. Hata mesajı için CheckFailed() kullandım.


Resim-2

Tablo tarayıcısıyla açtım ve BookCount sıfır olarak güncellemeye çalıştım ve hata mesajını ekranda gördüm. Bu hatayı düzeltmeden kaydetme veya başka işlem yapamazsınız.


Resim-3

boolean validateField(FieldId p1)

{

boolean ret;

#isoCountryRegionCodes

int lengthAgencyLocationCode;

ret = super(p1);

if (ret)

{

switch (p1)

{

case fieldNum(CustTable, CreditMax) :

if (this.CreditMax < 0)

{

ret = checkFailed(“@SYS69970”);

}

break;

case fieldNum(CustTable, InventLocation) :

ret = this.InventStorageDimMap::validateField(fieldNum(InventStorageDimMap, InventLocationId));

break;

case fieldNum(CustTable, Rfc_MX) :

if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoMX]))

{

ret = taxRegistrationValidator.validateRFC(this.Rfc_MX, this.CompanyType_MX);

}

break;

case fieldNum(CustTable, MainContactWorker) :

if (this.MainContactWorker)

{

ret = smmUtility::isValidWorkerInCurrentCompany(this.MainContactWorker);

}

break;

case fieldNum(CustTable, Blocked) :

ret = this.validateBlocked(this.Blocked);

break;

case fieldNum(CustTable, EinvoiceEANNum):

if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoDK]))

{

ret = CustTable::checkEInvoiceEAN(this.EinvoiceEANNum);

}

break;

}

}

return ret;

}

CustTable validateField () metodunu inceleyelim. Burada uzun validasyonların metotlara taşındığını ve genelde tek satırlı kontroller olduğunu görüyoruz. checkFailed direk veya metotların içinde kullanılıyor. validateField () metodu sadece girişi bitip başka bir nesneye odaklanmak istediğinizde çalışır. Genelde o nesneden ayrılmadan çalışması isteniz ancak bu mümkün değil.

Selamlar.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar:
www.mshowto.org

www.fatihdemirci.net

TAGs: X++,
validateField, Azure, Azure DevOps, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

Bu İçeriğe Tepkin Ne Oldu?
  • 1
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 1
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

2005 yılında Kocaeli Üniversitesi Bilgisayar Mühendisliğinden mezun oldum. Okulda ve ilk iş tecrübelerimde farklı yazılım dilleri kullandım. 2007 yılında Akşam gazetesinde işe başladım ve Microsoft Dynamics 365 (eski adıyla Axapta) ile orda tanıştım. Hiç duymadığım bir dil olan X++ kullanılıyordu. Kısa sürede adapta oldum ve kariyerimi bu alanda şekillendirdim. Bir kaç iş değişikliğinde sonra kendi firmamı kurdum. Şu anda DMR de yönetici ortak ve Çözüm mimarı olarak çalışmaktayım. 2010 yılında MCT oldum. Birçok faklı ortamda eğitimler verdim. Bloğum ve Youtube kanalımda tecrübelerimi paylaşmaktayım.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir