Get the value of a Text field:
//-------------------------------------------------------------------------------------------
// getTextField
//-------------------------------------------------------------------------------------------
function getTextField(e){
// Get the Form Context
var formContext = e.getFormContext();
// Get the value of a Contact's first name
var firstName = formContext.getAttribute("firstname").getValue();
}Set the value of a Text field://-------------------------------------------------------------------------------------------
// setTextField
//-------------------------------------------------------------------------------------------
function setTextField(e){
// Get the Form Context
var formContext = e.getFormContext();
// Set the Contact's first name to Joe
formContext.getAttribute("firstname").setValue("Joe");
// Set the Contact's first name to a variable
var firstName = "Joe";
formContext.getAttribute("firstname").setValue(firstName);
}Get the text of a Lookup field://-------------------------------------------------------------------------------------------
// getLookupFieldText
//-------------------------------------------------------------------------------------------
function getLookupFieldText(e){
// Get the Form Context
var formContext = e.getFormContext();
// Get the Parent Company name of a Contact
var companyName = formContext.getAttribute("parentcustomerid").getValue()[0].name;
}Set the value and text of a Lookup field://-------------------------------------------------------------------------------------------
// setLookupField
//-------------------------------------------------------------------------------------------
function setLookupField(e){
// Get the Form Context
var formContext = e.getFormContext();
// First, you need the GUID, Name and Entity Type stored as variables
// For this example, let's assume we have a "Parent Customer 2" field
// on a Contact and we want to populate it with the same value as the
// Parent Customer
// Get the GUID
var id = formContext.getAttribute("primarycustomerid").getValue()[0].id;
// Get the Company Name
var name = formContext.getAttribute("primarycustomerid").getValue()[0].name;
// Set the entity type - Account, Contact, Lead, Opportunity, etc.
var entityType = "Account";
// If the ID isn't null, then create a variable to store the new Object
if (id != null) {
var lookupVal = new Array();
lookupVal[0] = new Object();
lookupVal[0].id = guid;
lookupVal[0].name = name;
lookupVal[0].entityType = entityType;
// Set the value of the custom "Parent Customer 2" field
formContext.getAttribute("new_parentcustomerid2").setValue(lookupVal);
}
}Get the value of a Numeric field//-------------------------------------------------------------------------------------------
// getNumericField
//-------------------------------------------------------------------------------------------
function getNumericField(e){
// Get the Form Context
var formContext = e.getFormContext();
// Get the value of a custom Age field on a Contact
var age = formContext.getAttribute("new_age").getValue();
}Set the value of a Numeric field://-------------------------------------------------------------------------------------------
// setNumericField
//-------------------------------------------------------------------------------------------
function setNumericField(e){
// Get the Form Context
var formContext = e.getFormContext();
// Set the Contact's age to 25
formContext.getAttribute("new_age").setValue(25);
// Set the Contact's age to a variable
var age = 25;
Xrm.Page.data.entity.attributes.get("new_age").setValue(age);
}Get the value of a Bit field://-------------------------------------------------------------------------------------------
// getBitField
//-------------------------------------------------------------------------------------------
function getBitField(e) {
// Get the value of a custom "Is Decision Maker" checkbox on a Contact
var decisionMaker = formContext.getAttribute("new_isDecisionMaker").getValue();
// checked will return 1; unchecked will return 0;
}Set the value of a Bit field://-------------------------------------------------------------------------------------------
// setBitField
//-------------------------------------------------------------------------------------------
function setBitField(e){
// Get the Form Context
var formContext = e.getFormContext();
// Set the value of a custom "Is Decision Maker" checkbox to checked
formContext.getAttribute("new_isDecisionMaker").setValue(1);
// Set the value of a custom "Is Decision Maker" checkbox to unchecked
formContext.getAttribute("new_isDecisionMaker").setValue(0);
}Get the database value and text of an Option Set//-------------------------------------------------------------------------------------------
// getOptionSetField
//-------------------------------------------------------------------------------------------
function getOptionSetField(e){
// Get the Form Context
var formContext = e.getFormContext();
// Get the database value of the Opportunity Status Reason field
var statusReason = formContext.getAttribute("statuscode").getValue();
// Get the text of the Opportunity Status Reason field
var statusReason = formContext.getAttribute("statuscode").getText();
}Set the text and value of an Option Set://-------------------------------------------------------------------------------------------
// setOptionSetField
//-------------------------------------------------------------------------------------------
function setOptionSetField(e){
// Get the Form Context
var formContext = e.getFormContext();
// Set the value of the Opportunity Status Reason field
// Note: Option Set fields are set based on the database id, rather than the name
formContext.getAttribute("statuscode").setValue(100000001);
// Set the value of the Opportunity Status Reason field to a variable
var statusReasonId = 100000001;
formContext.getAttribute("statuscode").setValue(statusReasonId);
}Get the value of a Date field (01/31/2018 or 31/01/2018)//-------------------------------------------------------------------------------------------
// getDateField
//-------------------------------------------------------------------------------------------
function getDateField(e){
// Get the Form Context
var formContext = e.getFormContext();
// Get the value of the Opportunity Est. Close Date
var date = formContext.getAttribute("estimatedclosedate").getValue();
if (date != null) {
var day = date.getDate();
var month = date.getMonth();
var year = date.getFullYear();
month++;
// Add leading 0's to single digit days and months
if (day < 10) {day = "0" + day;}
if (month < 10) {month = "0" + month;}
// Create a variable with the formatted date as MM/DD/YYYY
var formattedDate = month + "/" + day + "/" + year;
// Create a variable with the formatted date as DD/MM/YYYY
//var formattedDate = date + "/" + month + "/" + year;
}
}Customizing forms:
//------------------------------------------------------------------------------------------- // showHideFormSections //------------------------------------------------------------------------------------------- // Consider using Business Rules before using this code function showHideFormSections(e){ // Get the Form Context var formContext = e.getFormContext(); // Create variables for the tab an section var tab=formContext.ui.tabs.get("TabName"); var section = tab.sections.get("SectionName"); // Hide a section section.setVisible(false); // Show a section section.setVisible(true); }Show/hide form fields://------------------------------------------------------------------------------------------- // showHideFields //------------------------------------------------------------------------------------------- // Consider using Business Rules before using this code function showHideFields(e){ // Get the Form Context var formContext = e.getFormContext(); // Show a form field formContext.getControl("new_formField").setVisible(true); // Hide a form field formContext.getControl("new_formField").setVisible(false); }Set field requirement level://------------------------------------------------------------------------------------------- // setRequiredLevel //------------------------------------------------------------------------------------------- function setRequiredLevel(e){ // Consider using Business Rules before using this code // Get the Form Context var formContext = e.getFormContext(); // Set Opportunity Est. Close Date as optional formContext.getAttribute("estimatedclosedate").setRequiredLevel("none"); // Set Opportunity Est. Close Date as required formContext.getAttribute("estimatedclosedate").setRequiredLevel("required"); }Use the value of an Option Set to set up form://------------------------------------------------------------------------------------------- // setCustomFormLayout //------------------------------------------------------------------------------------------- function setCustomFormLayout(e){ // Consider using Business Rules before using this code // Get the Form Context var formContext = e.getFormContext(); // This example assumes a company uses the same Opportunity form, // but shows/hides sections and makes fields required/optional based // on the value of a new_division field // hook this up to the onLoad event and the onChange event of the new_division field // Create variables for the form sections var tab = formContext.ui.tabs.get("tab_division"); var sectionComputers = tab.sections.get("section_computers"); var sectionMonitors = tab.sections.get("section_monitors"); var sectionPeripherals = tab.sections.get("section_peripherals"); // Set all sections as hidden sectionComputers.setVisible(false); sectionMonitors.setVisible(false); sectionPeripherals.setVisible(false); // Set all required fields as not required formContext.getAttribute("new_computerField").setRequiredLevel("none"); formContext.getAttribute("new_monitorField").setRequiredLevel("none"); formContext.getAttribute("new_peripheralField").setRequiredLevel("none"); // Get the text of the Division field var division = formContext.getAttribute("new_division").getText(); // Make sure Division is populated if (division != null) { // Use a switch statement to set up the form for each division switch(division) { // Computer division case "Computers": sectionComputers.setVisible(true); formContext.getAttribute("new_computerField").setRequiredLevel("required"); break; // Monitor division case "Monitors": sectionMonitors.setVisible(true); formContext.getAttribute("new_monitorField").setRequiredLevel("required"); break; // Peripherals division case "Peripherals": sectionPeripherals.setVisible(true); formContext.getAttribute("new_peripheralField").setRequiredLevel("required"); break; } } }Open a specific form based on a field value://------------------------------------------------------------------------------------------- // openSpecificForm //------------------------------------------------------------------------------------------- function openSpecificForm(e){ // Get the Form Context var formContext = e.getFormContext(); //if the form is update form if (formContext.ui.getFormType()==2) { // variable to store the name of the form var lblForm; // get the value picklist field var relType = formContext.getAttribute("customertypecode").getValue(); // switch statement to assign the form to the picklist value // change the switch statement based on the forms numbers and picklist values switch (relType) { case 1: lblForm = "Information1"; break; case 2: lblForm = "Information2"; break; default: lblForm = "Information"; } //check if the current form is form need to be displayed based on the value if (formContext.ui.formSelector.getCurrentItem().getLabel() != lblForm) { var items = Xrm.Page.ui.formSelector.items.get(); for (var i in items) { var item = items[i]; var itemId = item.getId(); var itemLabel = item.getLabel() if (itemLabel == lblForm) { //navigate to the form item.navigate(); } } } } }Pulling data from related entities:
//------------------------------------------------------------------------------------------- // getRelatedInfo //------------------------------------------------------------------------------------------- function getRelatedInfo(e) { // Get the Form Context var formContext = e.getFormContext(); // Set variables for the related entity to get data from try{var recordGuid = formContext.getAttribute("lookupField").getValue()[0].id; } catch(err) {} // If the recordGuid contains data if (recordGuid != null) { // Use the WebApi to get data Xrm.WebApi.retrieveRecord("entityName", recordGuid, "?$select=name,revenue").then( // If successful, set variables for the results function success(result) { var abc = result.field1Name; var def = result.field2Name; // Set the form fields formContext.getAttribute("field1").setValue(abc); }, // If there's an error in the WebApi call, log the error and alert the user function (error) { console.log(error.message); // handle error conditions var errorMessage = 'Error: An error occurred in the GetRelatedInfo function: ' + error.message; var alertStrings = { confirmButtonLabel: "Yes", text: errorMessage }; var alertOptions = { height: 120, width: 260 }; Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then( function success(result) { console.log("Alert dialog closed"); }, function (error) { console.log(error.message); } ); } ); } }Reference:https://www.dynamicconsulting.com/2020/08/14/dynamics-365-crm-javascript-reference/