Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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

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
CRM 2013:从高级查找打开记录时,取消任务的Javascript不起作用_Javascript_Crm_Dynamics Crm 2013 - Fatal编程技术网

CRM 2013:从高级查找打开记录时,取消任务的Javascript不起作用

CRM 2013:从高级查找打开记录时,取消任务的Javascript不起作用,javascript,crm,dynamics-crm-2013,Javascript,Crm,Dynamics Crm 2013,我们正在使用CRM 2013。要求从任务表单中完全去掉“关闭”按钮,然后创建一个新按钮“取消”来取消任务。因此,单击此按钮时,任务将为“另存为已取消” 因此,我们关注了大师Prasad关于使用javascript更改记录的博客: 剧本写得很好。单击“取消”按钮后,其状态将更改为已取消 我还在SOAP请求之前包含了这行代码,以防在发送取消请求之前修改页面 Xrm.Page.data.entity.save("saveandclose"); 然而,我们发现了一个非常奇怪的bug,由于某种原因,当从

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

因此,我们关注了大师Prasad关于使用javascript更改记录的博客:

剧本写得很好。单击“取消”按钮后,其状态将更改为已取消

我还在SOAP请求之前包含了这行代码,以防在发送取消请求之前修改页面

Xrm.Page.data.entity.save("saveandclose");
然而,我们发现了一个非常奇怪的bug,由于某种原因,当从AdvancedFind打开记录时,脚本没有被触发。这就像单击此新的自定义取消按钮时页面立即关闭一样

您知道在从Advanced Find打开的记录上运行脚本与在常规记录上运行脚本之间有什么区别吗

以下是更改记录状态的javascript:

    function changeRecordStatus(RECORD_ID, stateCode, statusCode) {

    //first of all save all data before sending the request, in case if there are some data that hasn't been saved
    Xrm.Page.data.entity.save("saveandclose");

    // create the SetState request
    var request = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
    request += "<s:Body>";
    request += "<Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
    request += "<request i:type=\"b:SetStateRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:b=\"http://schemas.microsoft.com/crm/2011/Contracts\">";
    request += "<a:Parameters xmlns:c=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
    request += "<a:KeyValuePairOfstringanyType>";
    request += "<c:key>EntityMoniker</c:key>";
    request += "<c:value i:type=\"a:EntityReference\">";
    request += "<a:Id>" + RECORD_ID + "</a:Id>";
    request += "<a:LogicalName>task</a:LogicalName>";
    request += "<a:Name i:nil=\"true\" />";
    request += "</c:value>";
    request += "</a:KeyValuePairOfstringanyType>";
    request += "<a:KeyValuePairOfstringanyType>";
    request += "<c:key>State</c:key>";
    request += "<c:value i:type=\"a:OptionSetValue\">";
    request += "<a:Value>" + stateCode + "</a:Value>";
    request += "</c:value>";
    request += "</a:KeyValuePairOfstringanyType>";
    request += "<a:KeyValuePairOfstringanyType>";
    request += "<c:key>Status</c:key>";
    request += "<c:value i:type=\"a:OptionSetValue\">";
    request += "<a:Value>" + statusCode + "</a:Value>";
    request += "</c:value>";
    request += "</a:KeyValuePairOfstringanyType>";
    request += "</a:Parameters>";
    request += "<a:RequestId i:nil=\"true\" />";
    request += "<a:RequestName>SetState</a:RequestName>";
    request += "</request>";
    request += "</Execute>";
    request += "</s:Body>";
    request += "</s:Envelope>";

    //send set state request
    $.ajax({
        type: "POST",
        contentType: "text/xml; charset=utf-8",
        datatype: "xml",
        url: Xrm.Page.context.getServerUrl() + "/XRMServices/2011/Organization.svc/web",
        data: request,
        beforeSend: function (XMLHttpRequest) {
            XMLHttpRequest.setRequestHeader("Accept", "application/xml, text/xml, */*");
            XMLHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
        },
        success: function (data, textStatus, XmlHttpRequest) {
            Xrm.Page.ui.close();
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(errorThrown);
        }
    });
}

然后,这里是用于取消任务的新自定义功能区按钮的命令定义。我将statuscode=2和statescode=6传入上述函数

<CommandDefinitions>
      <CommandDefinition Id="Mscrm.SaveAsCancelled">
        <EnableRules>
          <EnableRule Id="Mscrm.VisualizationPaneNotMaximized" />
          <EnableRule Id="Mscrm.SaveAsCancelled.FormRule" />
        </EnableRules>
        <DisplayRules>
          <DisplayRule Id="Mscrm.CanWriteSelected" />
          <DisplayRule Id="Mscrm.SelectedEntityHasStatecode" />
        </DisplayRules>
        <Actions>
          <JavaScriptFunction FunctionName="changeRecordStatus" Library="$webresource:new_DeactivateTask.js">
            <CrmParameter Value="FirstPrimaryItemId" />
            <IntParameter Value="2" />
            <IntParameter Value="6" />
          </JavaScriptFunction>
        </Actions>
      </CommandDefinition>

谢谢,非常感谢您的帮助。

此链接对我们帮助很大。这是CRM 2013的一项新功能: