list collector sys_user - catalog item

levino
Giga Guru

Hi there

i have a list collector (sys_user) field on a catalog item.

i need to get the 'employee_number' which is field on the sys_user table and store the values as a comma separated list on  a  single text field 'user_list' on the catalog item.

i have done scripts on refrence fields but never on a list collector

 

please advise

Thanks

Levino

 

 

 

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }
var ga = new GlideAjax('restrictduplicateitem');
        ga.addParam('sysparm_name', 'userList');
	
        ga.addParam('sysparm_user', newValue);


        ga.getXMLAnswer(function(answer){
			var bs = answer;
			
			g_form.setValue('user_list',bs);
		}

             
        );
    }
   //Type appropriate comment here, and begin script below


script include
var restrictduplicateitem = Class.create();
restrictduplicateitem.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    
	userList: function() {
        var user = this.getParameter('sysparm_user');
        var string = [];
        string.split(',');
        for (var i = 0; i < string.length; i++) {
            var gr = new GlideRecord('sys_user');
            gr.get(string[i]);
            gr.addQuery('sys_id', user);
            gr.query();
            while (gr.next()) {
                var list = gr.getDisplayValue('getemployee_number');
                //list.split(',');

                return list;
            }
		}
        },
		
	
    type: 'restrictduplicateitem'
});
   

 

 

  

1 ACCEPTED SOLUTION

@levino 

small update

arr.push(gr.getValue('employee_number'));

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

8 REPLIES 8

@levino 

Glad to help.

Happy learning.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Devender Kumar
Tera Guru
Tera Guru

Hi @levino 

Please try your script like this

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }
var ga = new GlideAjax('restrictduplicateitem');
        ga.addParam('sysparm_name', 'userList');
	
        ga.addParam('sysparm_user', newValue);


        ga.getXMLAnswer(function(answer){
			var bs = answer;
			alert(bs);
			g_form.setValue('user_list',bs);
		}

             
        );
    }
   //Type appropriate comment here, and begin script below


script include
var restrictduplicateitem = Class.create();
restrictduplicateitem.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    
	userList: function() {
        var user = this.getParameter('sysparm_user');
        var string = [];
var list = [];
string.push(user);
        //string.split(',');
        for (var i = 0; i < string.length; i++) {
            var gr = new GlideRecord('sys_user');
            //gr.get(string[i]);
            gr.addQuery('sys_id', string[i]);
            gr.query();
            while (gr.next()) {
              //  var list = gr.getDisplayValue('getemployee_number');
list.push(gr.getDisplayValue('getemployee_number'));
                //list.split(',');

                return list;
            }
		}
        },
		
	
    type: 'restrictduplicateitem'
});

 

Please mark correct or helpful if your issue is resolved.

 

Regards

Devender 

Hi Devender

the alert comes up with this message NativeArray@1dd119e

Thanks

Levino

AmishRanjan2
Mega Guru

Hi @levino ,

 

Try replacing below script in script include and let me know if it works:

 

Script Include:

 

var restrictduplicateitem = Class.create();
restrictduplicateitem.prototype = Object.extendsObject(AbstractAjaxProcessor, {

userList: function () {
var usersSysID = this.getParameter('sysparm_user');
var employeeNumberList = [];
var userGr = new GlideRecord('sys_user');
userGr.addEncodedQuery("sys_idIN"+usersSysID.toString());
userGr.query();
while (userGr.next()) {
employeeNumberList.push(userGr.getValue('getemployee_number').toString());
}
return employeeNumberList.toString();
},

type: 'restrictduplicateitem'
});
Best Regards,
Amish Ranjan