Friday 15 March 2013

Trigger workflow from button using JavaScript in CRM 2011


function CallWorkflow(entityId, workflowId) {
  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\">" +

    Xrm.Page.context.getAuthenticationHeader() +
    "<soap:Body>" +
    "<Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\>" +
    "<Request xsi:type=\"ExecuteWorkflowRequest\">" +
    "<EntityId>" + entityId + "</EntityId>" +
    "<WorkflowId>" + workflowId + "</WorkflowId>" +
    "</Request>" +
    "</Execute>" +
    "</soap:Body>" +
    "</soap:Envelope>";

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

  xmlHttpRequest.send(xml);
}

Tuesday 12 March 2013

Disable all fields in CRM 2011 based on Statuscode using Javascript


function DisableFields() {
    if (Xrm.Page.data.entity.attributes.get("statuscode").getValue() != 1) {
        disableFormFields(true);
    }
}
function doesControlHaveAttribute(control) {
    var controlType = control.getControlType();
    return controlType != "iframe" && controlType != "webresource" && controlType != "subgrid";
}
function disableFormFields(onOff) {
    Xrm.Page.ui.controls.forEach(function (control, index) {
        if (doesControlHaveAttribute(control)) {
            control.setDisabled(onOff);
        }
    });
}

Save this code on webResources and call DisableFields method on page OnLoad.

Thursday 7 March 2013