In this blog, we will tell you how you can auto-populate fields in Dynamics 365 form.
Microsoft Dynamics provide you a feature to auto populate fields means populating it automatically, if you already have entered some data in Dynamics based on your requirement.
For example:
On selection of RFQ Product Name, respective other fields should auto populate.
Here, RFQ Product Name is a Lookup Field.
Step 1: Go to Solutions-> RFQ(Solution Name)->Web Resources->New
Step 2: Enter a Name, select Type and open text editor to write the program for auto population.
Here we have selected JavaScript as Type, so Name of web resource will be with dot js extension(here we have taken product.js)
Step 3: Open text editor and write the JavaScript as per requirement.
JavaScript
function product(executionContext)
{
debugger;
//Get the Product Name lookup of the record
let formContext = executionContext.getFormContext();
let lookup = formContext.getAttribute("xrm_rfqproductname").getValue();
if (lookup != null)
{
let lookunfieldStateId=lookup[0].id.replace('{',"").replace('}',"");
let req = new XMLHttpRequest();
let globalContext = Xrm.Utility.getGlobalContext();
//retrieving the required fields
//Here sending a “Web API” call of “GET” type
req.open("GET",globalContext.getClientUrl()+"/api/data/v9.1/xrm_products("+lookunfield
StateId+")$select=xrm_accutechstockcode,_xrm_category_value,xrm_description,xrm_
distributorpartnumber,xrm_manufacturepartnumber,xrm_producttype,_xrm
_subcategory_value,_xrm_subsubcategory_value", 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.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function() {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
let result = JSON.parse(this.response);
//substituting retrieved fields into variables
let xrm_accutechstockcode = result["xrm_accutechstockcode"];
let _xrm_category_value = result["_xrm_category_value"];
let _xrm_category_value_formatted = result["_xrm_category_value@OData.Community.Display.V1.FormattedValue"];
let _xrm_category_value_lookuplogicalname = result["_xrm_category_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
let xrm_description = result["xrm_description"];
let xrm_distributorpartnumber = result["xrm_distributorpartnumber"];
let xrm_manufacturepartnumber = result["xrm_manufacturepartnumber"];
let xrm_producttype = result["xrm_producttype"];
let xrm_producttype_formatted = result["xrm_producttype@OData.Community.Display.V1.FormattedValue"];
let _xrm_subcategory_value = result["_xrm_subcategory_value"];
let _xrm_subcategory_value_formatted = result["_xrm_subcategory_value@OData.Community.Display.V1.FormattedValue"];
let _xrm_subcategory_value_lookuplogicalname = result["_xrm_subcategory_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
let _xrm_subsubcategory_value = result["_xrm_subsubcategory_value"];
let _xrm_subsubcategory_value_formatted = result["_xrm_subsubcategory_value@OData.Community.Display.V1.FormattedValue"];
let _xrm_subsubcategory_value_lookuplogicalname = result["_xrm_subsubcategory_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
//populating the fields
if(_xrm_category_value != null)
{
//Category is a lookup field and data comes in 3 parts: entity type, id and name, that’s why we have created an array for that
let lookup1 = new Array();
lookup1[0]=new Object();
lookup1[0].entityType=_xrm_category_value_lookuplogicalname;
lookup1[0].id=_xrm_category_value;
lookup1[0].name=_xrm_category_value_formatted;
formContext.getAttribute("xrm_rfqcategory").setValue(lookup1);
}
if(_xrm_subcategory_value != null)
{
//lookup field
let lookup1=new Array();
lookup1[0]=new Object();
lookup1[0].entityType=_xrm_subcategory_value_lookuplogicalname;
lookup1[0].id=_xrm_subcategory_value;
lookup1[0].name=_xrm_subcategory_value_formatted;
formContext.getAttribute("xrm_subcategory").setValue(lookup1);
}
if(_xrm_subsubcategory_value != null)
{
//lookup field
let lookup1=new Array();
lookup1[0]=new Object();
lookup1[0].entityType=_xrm_subsubcategory_value_lookuplogicalname;
lookup1[0].id=_xrm_subsubcategory_value;
lookup1[0].name=_xrm_subsubcategory_value_formatted;
formContext.getAttribute("xrm_subsubcategory").setValue(lookup1);
}
//populating accutechstockcode which is autonumber field
formContext.getAttribute("xrm_accutechstockcode").setValue(xrm_acc utechstockcode);
//populating product type which is option set field
formContext.getAttribute("xrm_product_type").setValue(xrm_producttype);
//manufacturepartnumber,distributorpartnumber,description are text fields
formContext.getAttribute("xrm_manufpartnumber").setValue(xrm_manufacturepartnumber);
formContext.getAttribute("xrm_distributorpartnumber").setValue(xrm_distributorpartnumber);
formContext.getAttribute("xrm_description").setValue(xrm_description);
} else {
Xrm.Utility.alertDialog(this.statusText);
}
}
}
req.send();
}
else{
//If lookup(Product Name) is null then all fields are set to null
formContext.getAttribute("xrm_rfqcategory").setValue(null);
formContext.getAttribute("xrm_subcategory").setValue(null);
formContext.getAttribute("xrm_subsubcategory").setValue(null);
formContext.getAttribute("xrm_accutechstockcode").setValue(null);
formContext.getAttribute("xrm_product_type").setValue(null);
formContext.getAttribute("xrm_manufpartnumber").setValue(null);
formContext.getAttribute("xrm_description").setValue(null);
formContext.getAttribute("xrm_distributorpartnumber").setValue(null); }
Step 4: Save and Publish the Web Resource after that.
Step 5: Refresh the main form
Step 6: Select any RFQ Product Name
Here we have selected Product 1 and all the respective fields are auto populated
Similarly, we can do the same for any of the other fields in the form.