Merhaba,
Dynamics Ax/365 projelerimizde ekrana çıkartılan tüm mesajlar, uyarılar, hatalar vs infolog clası ile yönetilmektedir.
Bazı durumlarda bu hata mesajlarının içeriğini ek olarak yakalamak isteyebiliriz;
Bildiğiniz üzere tabloya her bir kayıt geldiğinde validateWrite() yöntemi çalışmakta ve buradaki checkFailed() methodu ile warning mesajları kullanıcıya gösterilmektedir.
Fakat bir Web Servisi ile tabloya insert yaptığımızda validateWrite içindeki hata mesajlarını web serviste otomatik olarak try catch bloğunda yakalayamadığınız için gösteremezsiniz.
Dolayısıyla burada mecburen, infolog‘tan o an ekrana yazılan uyarıyı alıp yakalamamız gerekir. İşte bu gibi durumlarda aşağıdaki method ile bu uyarıları, hataları vs yakalayıp işlem yapabiliriz.
// https://semihcelikol.com // Semih Çelikol static void SC_GetInfoLogStr(Args _args) { container infologCon; container infoLogConLineCon; int i; info("Test Info messages"); error("Test Error messages"); warning("Test Warning messages"); //Get and clear infolog infologCon = infolog.cut(); for(i=2; i<=conLen(infologCon); i++) { //Get details infoLogConLineCon = conPeek(infologCon, i); //Get Info type messages; if(conPeek(infoLogConLineCon, 1) == 0) { info(strFmt("Info: %1", conPeek(infoLogConLineCon, 2))); } //Get Error type messages; if(conPeek(infoLogConLineCon, 1) == 3) { info(strFmt("Error: %1", conPeek(infoLogConLineCon, 2))); } //Get warning type messages; if(conPeek(infoLogConLineCon, 1) == 1) { info(strFmt("Warning: %1", conPeek(infoLogConLineCon, 2))); } } }
Kaynaklar;
https://www.codecrib.com/2011/10/get-infolog-details-from-code.html