How to get value from reference field on service catalog item form?

Jarkko
Tera Expert

Hi!
I'm trying to implement a service catalog item with variable set containing two variables. The first one is requested for type dropdown of users and the other is a reference dropdown to group table.


The idea is to filter the list of groups in groups dropdown to match the groups where the user selected in the requested for dropdown is a member of by using script include getting sys_id of selected user as a parameter.

 

Is there any way to get the selected user from the user dropdown? I've tried pretty much everything with no success.

 

All help be appreciated. Thanks!

1 ACCEPTED SOLUTION

Faizeal Mohamed
Tera Guru

Hi,

 

1. Go to the group variable > type specification > use reference qualifier as advanced and reference qualifier as

 

javascript: new getUserGroups(). getGroupSysid(current.variables.requested_for); //use the right variable name for user

 

2. Create a script include like below

 

var getUserGroups = Class.create();

getUserGroups.prototype = {

    initialize: function() {},

    getGroupSysid: function(requested_for) {

        var grp = [];

        var usrmember = new GlideRecord('sys_user_grmember');

      usrmember.addQuery('user',requested_for);

        usrmember.query();

        while (usrmember.next()) {

            grp.push(usrmember.group.toString());

        }

 

        if (grp.toString() != '')

            return 'sys_idIN' + grp.toString();

         else

            return 'sys_id=NULL';

    },

 

    type: 'getUserGroups'

};

 

please try this and let me know.

 

Thanks,

Faizeal.

 

View solution in original post

2 REPLIES 2

Faizeal Mohamed
Tera Guru

Hi,

 

1. Go to the group variable > type specification > use reference qualifier as advanced and reference qualifier as

 

javascript: new getUserGroups(). getGroupSysid(current.variables.requested_for); //use the right variable name for user

 

2. Create a script include like below

 

var getUserGroups = Class.create();

getUserGroups.prototype = {

    initialize: function() {},

    getGroupSysid: function(requested_for) {

        var grp = [];

        var usrmember = new GlideRecord('sys_user_grmember');

      usrmember.addQuery('user',requested_for);

        usrmember.query();

        while (usrmember.next()) {

            grp.push(usrmember.group.toString());

        }

 

        if (grp.toString() != '')

            return 'sys_idIN' + grp.toString();

         else

            return 'sys_id=NULL';

    },

 

    type: 'getUserGroups'

};

 

please try this and let me know.

 

Thanks,

Faizeal.

 

Thanks for Your help Faizeal
Your solution works. Only thing needs to be changed is name of variable in the function parameter. It should be current.variables.requested_for instead of current.requested_for,