Search This Blog

Thursday, December 30, 2021

Dynamics 365/CRM JavaScript Development Code

 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:

Show/hide form sections

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


No comments:

Post a Comment