CRM 2011 - Form Kaydetmeyi Engelleme (CANCELING THE SAVE OPERATION)

CRM formlarında bazı durumlarda formun kaydetilmesin engellemk isteyebiliriz . Bu işlemi Javascript yazarak gerçekleştirebiliriz. (Bu işlemi form save metotlarında yapabiliyoruz)

Öncelikle CRM 2011 R12 den önceki versiyonlarda event.returnValue=false ile bu işlem yapılabiliyordu.Ama bu kod satrı sadece IE tarayıcılarında çalışmaktadır . Tüm tarayıcılarda ise aşağıdaki yöntem geçerlidir.

İşlemi gerçekleştirmek için bir Javascript kütüphenesine metot yazacağız. Bunu Form Save anında çağıracağız. Dikkat edilmesi gereken şey Form Save anında metotumuzu eklerken "Pass execution context as first parameter" seçeneğinin seçilmesi gerekir.

Aşağıdaki örnekte Account formunda TcNo yu girmeden formu kaydettirmemeyi sağlayacağız.

Account formuna web resource ekleyelim.




Bir sonraki adımda Form Save eventine metotumuzu ekleyelim.



Not: Pass execution context as first parameter seçeneğini işaretlemezsek işlem çalışmayacaktır.

Kaydetmeyi engelleyen script kodu   executionObj.getEventArgs().preventDefault()

new_AccountSaveLibrary.js kod

function Account_Form_OnSave(executionObj) {
    try {
        var tcNo = Xrm.Page.getAttribute("accountnumber").getValue();
        var vergiDairesi = Xrm.Page.getAttribute("new_vd").getValue();
        var vergiNo = Xrm.Page.getAttribute("new_vergino").getValue();

        if ((tcNo !=null && tcNo !="") || (vergiNo !=null && vergiNo !="") || (vergiDairesi !=null && vergiDairesi !="")) {

            if (vergiNo != null && vergiNo != "") {
                if (!(vergiDairesi != null && vergiDairesi != "")) {
                    alert("Vergi Dairesi alanı boş bırakılmamalıdır.");
                    executionObj.getEventArgs().preventDefault();
                }
            }

            if (vergiDairesi != null && vergiDairesi != "") {
                if (!(vergiNo != null && vergiNo != "")) {
                    alert("Vergi No alanı boş bırakılmamalıdır.");
                    executionObj.getEventArgs().preventDefault();
                }
            }
        }
        else {
            alert("TC Kimlik No veya Vergi Alanlarından en az biri dolu olmalıdır.");
            executionObj.getEventArgs().preventDefault();
        }

    } catch (e) {
        alert("An error occured in Account_Form_OnSave Function.Message :" + e.message);
    }
}



Yukarıdaki metotta firma formunu kaydetmeye çalıştığımızda tcno veya vergi alanlarından herhangi biriinin doldurulması şartı aranıyor . Ayrıca vergi alanları girilecekse ikisininde girilmesi gerekir.

İlk baş ilgili alanlardan hiçbirini girmeden Kaydet butonuna basalım.




Sadece Vergi No alanını girelim.Kaydet butonuna basalım




Sadece Vergi Dairesi alanını girelim.Kaydet butonuna basalım




Hiç yorum yok:

Yorum Gönder