2011-10-21 16 views
3

により変更statecode + statusCodeを 私がSOAPを呼び出すJavaScript関数があります。CRM 2011 - CRM 2011年に私はリボンのボタンのクリックでstatecodeとからstatusCodeを変更したいのjavascript

if (typeof (Smpl) == "undefined") { Smpl = {}; } 

Smpl.Items = { 
change: function() { 

    var entityId = Xrm.Page.data.entity.getId().substr(1, 36); 
    var entityName = Xrm.Page.data.entity.getEntityName(); 
    var entityState = 0; 
    var entityStatus = 100007891; 

    var xml = "<?xml version='1.0' encoding='utf-8'?>" + 
    "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" + 
    "<soap:Body><Execute xmlns='http://schemas.microsoft.com/crm/2007/WebServices'><Request xsi:type='SetStateDynamicEntityRequest'>" + 
    "<Entity><Id xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + entityId + "</Id>" + 
    "<Name xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + entityName + "</Name></Entity>" + 
    "<State>" + entityState + "</State>" + 
    "<Status>" + entityStatus + "</Status>" + 
    "</Request></Execute></soap:Body></soap:Envelope>"; 

    var xHReq = new ActiveXObject("Msxml2.XMLHTTP"); 
    xHReq.Open("POST", "http://my.full.com:80/web/mscrmservices/2007/CrmService.asmx", false); 
    xHReq.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Execute"); 
    xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); 
    xHReq.setRequestHeader("Content-Length", xml.length); 
    xHReq.send(xml); 

    var resultXml = xHReq.responseXML; 
    var errorCount = resultXml.selectNodes('//error').length; 
    if (errorCount != 0) { 
     var msg = resultXml.selectSingleNode('//description').nodeTypedValue; 
     alert(msg); 
    } 
    window.location.reload(); 
    } 
} 

を私は、全体のコードがあると言うだろうもちろん、それはまったく機能していません。/ Googleではちょっとしたコードしか見つかりませんでしたが、私のコードとは何も変わりません。 本当に誰もjavascript経由でリボンからステータスを変更することはありませんか?

はありがとう

答えて

1

エンティティの状態を変更するには、EntityMonikerを使用する必要があります。プラグインでは.net、JScriptでも。

次のリンクからコード試してみてください。

Set Status or State of a Record Using Jscript

0

私は私の友人は、同じ問題を抱えていたので、私は、JScriptの経由CRM 2011年にデ・statecodeを変更していないが、私はあなたのソリューションを持っていると思いますが、ウェブ上でサーフィンました。

私の友人の場合、彼は間違ったフォーマットのstatecode値を持っていました。彼は0または1を使用していました。サービスは彼に言っているエラーを返していました.0または1はstatecodeの正しい値ではありませんでした。 C#ではEnumeration( 'Active'または 'Inactive')の値をStateに入れる必要があり、整数値を 'Active'に変更してsoap呼び出しがうまく動作します。

レポートあなたがそれに到着する場合の真の解決策:)

はあなたを参照してください。

関連する問題