无法通过JavaScript更改创建的自定义状态原因

问题描述 投票:1回答:1

我改变了salesorder实体并在status reason创建了一个新的Submitted。我在status reason州添加了一个名为PreTransportsubmitted,值为100000004。我可以通过这个请求从Active statepending status reason)到Submitted stateIn-Progress status reason):

          var request = ""
           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>" +recordGuid+ "</a:Id>";
           request += "              <a:LogicalName>salesorder</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  
           var req = new XMLHttpRequest();
           req.open("POST", Xrm.Page.context.getClientUrl() + "/XRMServices/2011/Organization.svc/web", true)
           // Responses will return XML. It isn't possible to return JSON.
           req.setRequestHeader("Accept", "application/xml, text/xml, */*");
           req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
           req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
           var successCallback = null;
           var errorCallback = null;
           req.send(request );

但它不起作用In-ProgressPreTransport在同一个state。我想这是因为permission。我应该在这个新的status reason上设置权限吗?

如果是,我该怎么做?请注意,我在内部部署了CRM 2011。

注意:我也试过这段代码,但没有成功。

XrmServiceToolkit.Soap.SetState("salesorder", Xrm.Page.data.entity.getId(), 1, 100000004,false);
javascript dynamics-crm dynamics-crm-2011 xrmservicetoolkit
1个回答
0
投票

对不起,我没有访问2011版本。但是我在CRM Rest builder下面测试了这个片段,它完美无缺。

我在status reason (StatusCode)100000000 : Shipping ready下创建了一个价值status (StateCode)的自定义1 : Submitted。确保你正在流过允许的过渡,如answered here

var entity = {};
entity.StateCode = {
    Value: 1
};
entity.StatusCode = {
    Value: 100000000
};

XrmServiceToolkit.Rest.Update("B4B625A1-3789-E811-A967-000D3A1A9407", entity, "SalesOrderSet", function() {
    //Success - No Return Data - Do Something
}, function(error) {
    Xrm.Utility.alertDialog(error.message);
}, true);

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.