Hi all,
So I've got a Boolean field on case that has the same logical name as a field on lead (that field is called new_field). I've connected the case to lead using a lead lookup field called new_lead.
Now whenever I toggle the Boolean field on case I want it to update the related Lead in the Lead lookup field. In the form I've passed the
I've then written the following Javascript:
function testFunction (executionContext,paramOne){ // paramOne will contain the field logical name (new_field) var formContext = executionContext.getFormContext(); var lead = formContext.getAttribute("new_lead").getValue(); // Get the value of the lead lookup field if (lead !== null) { // Check if the lead lookup field contains data var leadId = lead[0].id.slice(1, -1); //Slice the lead ID into a usable format var paramOneValue = formContext.getAttribute(paramOne).getValue(); // Get the field value of the passed field name var entity = {}; entity.paramOne = paramOneValue; // Trying to update a field in leads that has the same logical name. I'm trying to pass paramOne as a variable // Normally paramOne would be the logical name of the field on lead (e.g. new_field). But it doesn't seem to want to use the paramOne pass field name var req = new XMLHttpRequest(); req.open("PATCH", Xrm.Page.context.getClientUrl() "/api/data/v9.1/leads(" leadId ")", true); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.onreadystatechange = function() { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 204) { //Success } else { Xrm.Utility.alertDialog(this.statusText); } } }; req.send(JSON.stringify(entity)); } }
This seems to give me a error but when I modify the JS to the below it works
function testFunction (executionContext,paramOne){ // paramOne will contain the field logical name (new_field) var formContext = executionContext.getFormContext(); var lead = formContext.getAttribute("new_lead").getValue(); // Get the value of the lead lookup field if (lead !== null) { // Check if the lead lookup field contains data var leadId = lead[0].id.slice(1, -1); //Slice the lead ID into a usable format var paramOneValue = formContext.getAttribute(paramOne).getValue(); // Get the field value of the passed field name var entity = {}; entity.new_field = paramOneValue; // This seems to work if I replace paramOne with the actual lead field logical name var req = new XMLHttpRequest(); req.open("PATCH", Xrm.Page.context.getClientUrl() "/api/data/v9.1/leads(" leadId ")", true); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.onreadystatechange = function() { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 204) { //Success } else { Xrm.Utility.alertDialog(this.statusText); } } }; req.send(JSON.stringify(entity)); } }
It seems it won't pass the parameter field logical name into my PATCH request.
Is there anyway to dynamically sync this with the passed paramOne?