Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CRM 2013:用于取消任务的新功能区按钮_Javascript_Crm_Dynamics Crm 2013 - Fatal编程技术网

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

Javascript CRM 2013:用于取消任务的新功能区按钮,javascript,crm,dynamics-crm-2013,Javascript,Crm,Dynamics Crm 2013,我们正在使用CRM 2013。要求从任务表单中完全去掉“关闭”按钮,然后创建一个新按钮来取消任务。因此,单击此按钮时,任务将为“另存为已取消” 我尝试对customization.xml RibbonDiffXML进行如下修改,以用于任务实体: </CustomAction> <CustomAction Id="nwp.task.Form.SaveAsCancelled.CustomAction" Location="Mscrm.Form.task.MainTab.

我们正在使用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>
因此,当我单击“取消”按钮时,它要求我首先选择一条记录,因为它是一个网格控件。但是,如果我删除参数以选择某些记录,那么按钮将不会执行任何操作

您知道是否已经有一个内置的cancel或SaveAsCancelled或deactivate功能,不需要先选择记录


感谢您的意见

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

  • 任务
    中添加一个新的双值字段(我们称之为
    新的\u已取消
    ,默认值:否),并将其放在表单上,保持隐藏状态
  • 创建实时工作流,在记录更改时自动运行
  • WF将像这样运行(伪代码)
  • 如果新的\u取消不包含数据 设置新的\u取消=否 如果新的\u取消=是 将状态更改为已取消
  • 让您的功能区按钮调用一个自定义javascript函数,该函数通过OData将
    new\u cancelled
    更新为Yes
  • 备选办法:

  • 见上文
  • 创建一个
    操作
    ,我们将其称为
    SaveTaskAsCancelled
    ,并在传入
    new\u cancelled
    的记录更改后运行它
  • SAveTaskAsCancelled
    上注册插件,检查
    new\u cancelled
    (相同的逻辑:如果为空,将其设置为否,如果为是,则取消任务)
  • 见上文

  • 我看不出你怎么能期望使用一种方法来取消记录而不首先选择它,或者在网格中选择并使用网格按钮,或者打开记录使其成为唯一的“选中”记录,然后使用表单功能区上的按钮。出于兴趣,这是否意味着您打算让所有任务始终处于打开状态,并且只关闭已取消的任务,而不关闭已完成的任务?谢谢您的回复。我不知道没有内置的函数来取消任务,所以我们写了一个SOAP请求,按照这里的建议这样做,这要归功于Prasad大师,谢谢Alex的好建议。相反,我们编写了一个自定义函数来取消现在使用SOAP请求的任务。我们还在按钮上添加了一条规则,以便在表单不是只读时显示。但是,我注意到,当没有填写所有必填字段时,用户仍然可以取消任务。我仍在查找一条显示规则,以防止出现这种情况。您知道是否有显示规则可以防止用户在未填写所有必填字段时取消任务吗?非常感谢。如果字段不是空的,那么这将是
    aka
    真的(每个字段一个valuerule,包装在
    显示规则中
    <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>
    
    Mscrm.GridRibbonActions.deactivate=function(gridControl,records,entityTypeCode,defaultCloseState,callback)
    
    {Mscrm.GridCommandActions.deactivate(gridControl,records,entityTypeCode,defaultCloseState,callback)}
    
    if new_cancelled doesn't contain data set new_cancelled = No if new_cancelled = Yes change status to cancelled