2016-09-27 70 views
0

我需要爲我自定義的活動覆蓋MARK COMPLETE功能區按鈕。替代自定義活動的MARK COMPLETE功能區按鈕

有一個字段需要填寫活動才能完成。

我必須檢查天氣字段是否填充並完成活動,如果是的話。

我有一個計劃來編寫JS函數來檢查字段並完成活動,並使用RIBBON WORKBENCH將此函數應用於功能區按鈕。

我有兩個問題: - 是否有任何JS命令完成活動? - 如果我將此功能添加到功能區按鈕,它是否會覆蓋默認的「完成」功能,或者我需要以某種方式禁用此功能?

隨時告訴我是否需要詳細說明這個問題。

回答

1

我不會重寫默認行爲,您將最終得到一個開箱即用的按鈕,它很可能會恢復到應用CU時或CRM升級時的方式。

標記爲完整的觸發OnSave,利用這個事實,你爲什麼不上OnSave找保存模式的價值? Save Mode 58 on activities are Save as Completed並執行您的任務?

function onSave(executionContext) { 
    var eventArgs = executionContext.getEventArgs(); 
    var saveMode = eventArgs.getSaveMode(); 
    if (saveMode === 58) { //Mark as complete 
     //do something 

     //checks failed,don't want the user to mark as complete? 
     eventArgs.preventDefault(); 
     return false; 
    } 
}; 
+0

這可能會解決我的問題。我現在將執行它。我只需要問哪裏應用這個功能?我應該將它添加到表單,字段或功能區按鈕,還是別的什麼東西。我是CRM新手,有些事情讓我感到困惑。 –

+1

CRM - >自定義 - >表單屬性 - >事件處理 - >形式OnSave事件 - 添加一個事件處理函數與上述函數名稱,並勾選「傳遞執行上下文作爲第一個參數」 – dynamicallyCRM

0

我根據你的回答做了一些功能。希望這能夠完成這項工作。

function onSave(executionContext) { 
    var eventArgs = executionContext.getEventArgs(); 
    var saveMode = eventArgs.getSaveMode(); 
    if (saveMode === 58) { 
     var sendDate = Xrm.Page.getAttribute("ad_sampleproductssenton"); 
     Xrm.Page.ui.clearFormNotification('sampleId'); 

     if((sendDate=== null)||(sendDate==="undefined")){ 
      Xrm.Page.ui.setFormNotification("You have to populate 'Sample Product Sent On' field!", "ERROR", 'sampleId'); 
      eventArgs.preventDefault(); 
      return false; 

     }else{ 
      Xrm.Page.ui.clearFormNotification('sampleId'); 
     } 

    } 
};