CRM 2013:取消任务的新功能区按钮

时间:2014-09-26 03:16:04

标签: javascript crm dynamics-crm-2013

我们正在使用CRM 2013.要求是摆脱'关闭'完全从Task窗体中按钮,然后创建一个新按钮来取消Task。因此,当点击此按钮时,任务将“保存为已取消”#。

我尝试修改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中的deactivate函数的定义要求我选择一些记录项如下:

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

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

所以,当我点击&#39;取消&#39;按钮,它要求我先选择一个记录,因为它是一个网格控件。但是,如果我删除参数以选择某些记录,那么该按钮将不会执行任何操作。

您知道是否已经有内置取消或SaveAsCancelled或deactivate功能,不需要首先选择记录吗?

感谢您的意见!

1 个答案:

答案 0 :(得分:2)

我可以想到两种不依赖于重用平台代码的esay-ish方法:

  1. 将新的两个值字段添加到Task(我们称之为new_cancelled,默认值:否)并将其放在表单上,​​使其隐藏。
  2. 创建实时工作流程,在记录更改时自动运行
  3. WF会像这样运作(伪代码)
  4.     if new_cancelled doesn't contain data
            set new_cancelled = No
        if new_cancelled = Yes
            change status to cancelled
    
    1. 让您的功能区按钮调用自定义javascript函数,通过OData将new_cancelled更新为是
    2. 替代方法:

      1. 见上文
      2. 创建一个Action,让我们称之为SaveTaskAsCancelled,并在传入new_cancelled的记录更改后运行它。
      3. SAveTaskAsCancelled上注册一个插件,检查new_cancelled(同样的逻辑:如果它为空,将其设置为No,然后如果是,则取消任务)
      4. 见上文
相关问题