我们正在使用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功能,不需要首先选择记录吗?
感谢您的意见!
答案 0 :(得分:2)
我可以想到两种不依赖于重用平台代码的esay-ish方法:
Task
(我们称之为new_cancelled
,默认值:否)并将其放在表单上,使其隐藏。if new_cancelled doesn't contain data set new_cancelled = No if new_cancelled = Yes change status to cancelled
new_cancelled
更新为是替代方法:
Action
,让我们称之为SaveTaskAsCancelled
,并在传入new_cancelled
的记录更改后运行它。SAveTaskAsCancelled
上注册一个插件,检查new_cancelled
(同样的逻辑:如果它为空,将其设置为No,然后如果是,则取消任务)