gpt4 book ai didi

javascript - 客户关系管理 2013 : New Ribbon Button to Cancel a Task

转载 作者:行者123 更新时间:2023-12-02 16:57:35 25 4
gpt4 key购买 nike

我们使用的是 CRM 2013。要求是从任务表单中完全删除“关闭”按钮,然后创建一个新按钮来取消任务。因此,当单击此按钮时,任务将“另存为已取消”。

我尝试按如下方式修改 Task 实体的定制.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)}

因此,当我单击“取消”按钮时,它会要求我首先选择一条记录,因为它是一个网格控件。但如果我删除参数来选择某些记录,那么该按钮将不会执行任何操作。

你知道是否已经有内置的取消或SaveAsCancelled或停用功能,不需要先选择一条记录?

感谢您的意见!

最佳答案

我可以想到两种不依赖重用平台代码的简单方法:

  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 函数,该函数通过 OData 将 new_cancelled 更新为 Yes
  • 替代方法:

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

    关于javascript - 客户关系管理 2013 : New Ribbon Button to Cancel a Task,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26051495/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com