Autopopulate a manager field based on user selected in a Businesss application

Community Alums
Not applicable

Hi ,

 

please look at the attachment , the Business Leaders should be auto populated with the Manager of the Business contacts

 

And if the level of the business contact is a manager then he himself should be populated under Business Leader as wellbusiness Leader should be autopopulated on adding business contact.png 

Kindly help with the Request.

1 ACCEPTED SOLUTION

Hello,

 

Please use the below:-

 

Write a Onchange client script on Business contact field with the below code(Remember to replace the businesscontact and businessleader field name with your fieldname)

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }
    var ga = new GlideAjax('getMembers');
    ga.addParam('sysparm_name', 'getMembers');
    ga.addParam('sysparm_internal_service_name', g_form.getValue('businessconatctfieldname'));
    ga.getXML(errorTypeParse);
    function errorTypeParse(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        g_form.setValue('businessleaderfieldname', answer);
    }
}

 

Then write a script include with name getMembers and have client callable checkbox as true and then use the below code:-

 

var getMembers = Class.create();
getMembers.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getMembers: function() {
        var arr = [];
        var grp_mem = new GlideRecord('sys_user');
        grp_mem.addEncodedQuery('sys_idIN' + this.getParameter('sysparm_internal_service_name'));
        grp_mem.query();
        while (grp_mem.next()) {
            gs.log('test');
            arr.push(grp_mem.manager.toString());
        }

        return arr.toString();
    },


    type: 'getMembers'
});

 

Please mark my answer as correct based on Impact.

View solution in original post

5 REPLIES 5

Pavankumar_1
Mega Patron

Hi @Community Alums ,

create onchnage client script on business contact field.

1. Wen the business contact change manger will populate accordingly.

Client script:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }
    var ga = new GlideAjax('global.setmanager'); //script include name
    ga.addParam('sysparm_name', 'getmanager'); //function name
    ga.addParam('sysparm_usrsysid', newValue); //passing buisness contact sysid to server
    ga.getXMLAnswer(setusermanager); //callback function
    function setusermanager(response) {
        g_form.setValue('businessleaderfieldname', response); //give business leader field to set manger on business leader 
    }
}

2. Script Include: Create a script include and check Client Callable as true

var setmanager = Class.create();
setmanager.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getmanager: function() {
        var sysid = this.getParameter('sysparm_usrsysid');
        var grusr = new GlideRecord("sys_user");
        grusr.addQuery('sys_id', sysid);
        grusr.query();
        if (grusr.next()) {
            return grusr.manager;
        }
    },
    type: 'setmanager'
});

 

If it helps please click Accept as Solution/hit the Thumb Icon.
ServiceNow Community MVP 2024.
Thanks,
Pavankumar