2014-09-26 79 views
0

我們在CRM 2013上。要求是完全從「任務」窗體中刪除「關閉」按鈕,然後創建一個新按鈕以取消該任務。所以當點擊這個按鈕時,任務將會被保存爲取消。CRM 2013:新的功能區按鈕取消任務

我嘗試修改customization.xml RibbonDiffXML作爲遵循任務實體:

</CustomAction> 
     <CustomAction Id="nwp.task.Form.SaveAsCancelled.CustomAction" Location="Mscrm.Form.task.MainTab.Save.Controls._children" Sequence="55"> 
     <CommandUIDefinition> 
      <Button Command="Mscrm.SaveAsCancelled" Id="nwp.task.Form.SaveAsCancelled" Image32by32="$webresource:nwp_/img/btn_CaseCloseDialog32.png" Image16by16="$webresource:nwp_/img/btn_CaseCloseDialog16.png" LabelText="$LocLabels:nwp.task.Form.SaveAsCancelled.LabelText" Sequence="55" TemplateAlias="o1" ToolTipTitle="$LocLabels:nwp.task.Form.SaveAsCancelled.ToolTipTitle" ToolTipDescription="$LocLabels:nwp.task.Form.SaveAsCancelled.ToolTipDescription" /> 
     </CommandUIDefinition> 
     </CustomAction> 

這裏是Mscrm.SaveAsCancelled命令定義。我發現在CRM服務器內置功能/_static/_common/scripts/RibbonActions.js

<CommandDefinition Id="Mscrm.SaveAsCancelled"> 
     <EnableRules> 
     <EnableRule Id="Mscrm.VisualizationPaneNotMaximized" /> 
    </EnableRules> 
    <DisplayRules> 
     <DisplayRule Id="Mscrm.CanWriteSelected" /> 
     <DisplayRule Id="Mscrm.SelectedEntityHasStatecode" /> 
    </DisplayRules> 
    <Actions> 
     <JavaScriptFunction FunctionName="Mscrm.GridRibbonActions.deactivate" Library="/_static/_common/scripts/RibbonActions.js"> 
     <CrmParameter Value="SelectedControl" /> 
     <CrmParameter Value="SelectedControlSelectedItemReferences" /> 
     <CrmParameter Value="SelectedEntityTypeCode" /> 
     <IntParameter Value="2" /> 
     </JavaScriptFunction> 
    </Actions> 
     </CommandDefinition> 

下,但是在RibbonActions.js停用函數的定義要求我選擇一些記錄的項目如下:

Mscrm.GridRibbonActions.deactivate=function(gridControl,records,entityTypeCode,defaultCloseState,callback) 

{Mscrm.GridCommandActions.deactivate(gridControl,records,entityTypeCode,defaultCloseState,callback)} 

所以當我點擊'取消'按鈕時,它會要求我先選擇一個記錄,因爲它是一個網格控件。但是如果我刪除參數來選擇某些記錄,那麼按鈕將不會執行任何操作。

是否知道是否已經有內置的取消或SaveAsCancelled或取消激活功能,不需要先選擇記錄?

欣賞您的輸入!

+0

我看不出你如何能指望用一個方法取消記錄沒有首先選擇它,無論是在網格中選擇和使用網格按鈕或打開該記錄是唯一的「選定」記錄,然後使用表單功能區上的按鈕。 出於興趣,這是否意味着您打算讓所有任務都開放,並且只關閉那些被取消的任務,而不是那些已完成的任務? – AdamV 2014-09-26 13:11:07

+0

感謝您的回覆亞當。我不知道沒有內置函數來取消該任務,所以我們按照這裏所建議的那樣寫了一個SOAP請求來執行此操作,相信Guru Prasad http://guruprasadcrm.blogspot.com/2013/02/更改記錄狀態使用javascript.html – ichachan 2014-09-27 00:40:22

回答

2

我能想到的不依賴於重用平臺代碼的兩個ESAY上下的方法:

  1. 一個新的兩個值的字段添加到Task(姑且稱之爲new_cancelled,默認值:無)和把它放在窗體上,讓它隱藏起來。
  2. 創建一個實時工作流程,自動運行它時,記錄更改
  3. WF會是這樣的(僞)操作
 
    if new_cancelled doesn't contain data 
     set new_cancelled = No 
    if new_cancelled = Yes 
     change status to cancelled 
  • 讓你的功能區按鈕調用自定義JavaScript函數更新new_cancelled爲是通過OData的
  • 另一種方法:

    1. 見上
    2. 創建Action,姑且稱之爲SaveTaskAsCancelled並通過與new_cancelled記錄更改後運行
    3. SAveTaskAsCancelled註冊一個插件,檢查new_cancelled(相同的邏輯:如果它爲空,將其設置爲不,那麼如果它是那麼取消任務)
    4. 見上
    +0

    謝謝亞歷克斯的好建議。而是寫了一個自定義函數來使用SOAP請求立即取消該任務。 我們還在按鈕上放置了一條規則,以便它在窗體不是隻讀時顯示。 但是,我注意到用戶仍然可以取消任務,當不是所有必填字段填寫。我仍然查找顯示規則,防止這種情況。您是否知道是否有一個顯示規則可以防止用戶在未填寫所有必填字段時取消該任務? 非常感謝。 – ichachan 2014-09-27 00:39:08

    +0

    這就是''又名'如果字段不爲空,則爲true(每個字段一個值,包含在'DisplayRule'中) – Alex 2014-09-29 07:14:13

    相關問題