CRM 2011 - изменить код состояния + код состояния с помощью JavaScript - PullRequest
3 голосов
/ 21 октября 2011

Я хочу изменить код состояния и код состояния при нажатии кнопки ленты в CRM 2011. У меня есть функция JavaScript, вызывающая SOAP:

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 ??

Спасибо

Ответы [ 2 ]

1 голос
/ 14 января 2013

Для изменения состояния объекта вам нужно использовать EntityMoniker, в .net в плагинах, а также в JScript.

Попробуйте код по следующей ссылке:

УстановитьСостояние или состояние записи с использованием Jscript

0 голосов
/ 15 ноября 2011

Я занимался серфингом в Интернете, потому что у моего друга была та же проблема, я не изменил код состояния в CRM 2011 через JScript, но, думаю, у меня есть ваше решение.

В случае моего друга, он имел значение кода состояния в неправильном формате, он использовал 0 или 1, и служба возвращала ошибку, сообщая ему, что 0 или 1 не были правильными значениями кода состояния, тогда я, хотя, кодируя в В C # вы должны поместить в State значение из Enumeration («Active» или «Inactive»), он изменил свое целочисленное значение на «Active», и вызов soap работает нормально.

Сообщите реальное решение, если вы приедете к нему:)

Увидимся.

...