The CreatorCon Call for Content is officially open! Get started here.

get user_name from List Collector (sys_user) and put user+user_name into hidden variable

Community Alums
Not applicable

I have a catalog item with a list collector that gathers multiple users. When that variable comes through on the ritm/task, it's just a list of names. What is desired is for their user_name to also appear. However, I don't want a separate field on the form that they see when they're filling this out; I only want it to be passed to the ritm/task after the form is submitted. I thought I'd make a multiline textbox variable that could fill in the users and their usernames in this format: 

    Bob User [bob123]
    Sally User [sally456]

by using a client script and script include. Neither is working and when I submit the form, I get 'Unhandled exception in GlideAjax'. Can you please look at what I have and help? 

Here is the client script (ui type=all; applies to cat item, ritm, task): 

function onSubmit() {
   //array of sys_ids from list collector variable 
    var usersToAdd = g_form.getValue('persons_requiring_access').toString().split(',');

    var ga = new GlideAjax('GetListCollectorVariables'); //call the script include
    ga.addParam('sysparm_name', 'UsersListCollector'); //name of function in script include
    ga.addParam('sysparm_users', usersToAdd); //pass array of users to SI
    ga.getXML(GetVariables);

    function GetVariables(response) {
        var answer = response.responseXML.documentElement.getAttribute('answer');
        g_form.setValue('persons_requiring_access_text', answer);
    }
   
}

Here is the script include (client callable = true; global scope) 

var GetListCollectorValues = Class.create();
GetListCollectorValues.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
    UsersListCollector: function() {
		var userInfo = '';
		var usersFromListCollector = this.getParameter('sysparm_users');
		var grUser = new GlideRecord('sys_user');
		grUser.addQuery('sys_id','IN',usersFromListCollector);
		grUser.query();
		while(grUser.next()) { 
			userInfo += grUser.name + ' [' + grUser.user_name + ']';
		}
		return info.toString();
    },
    type: 'GetListCollectorValues'
});
1 ACCEPTED SOLUTION

remove this one only glide_list=true

View solution in original post

27 REPLIES 27

Community Alums
Not applicable

I still need help putting the stuff into that variable though. I uncommented line 12; but this doesn't work because that variable is still empty after I check the variables on the ritm. 

find_real_file.png

Please check variable name is correct ? 

set "Applies on Requested Items" as true on catalog client script

Do you have any other script which is contradicting or setting the value on that variable ? 

Community Alums
Not applicable

Ok, I checked the req item box and double-checked the variable name is correct. Also, there is no other script that uses this variable anywhere. Tried again, but still, the field is empty. 

Does it matter that this field 'persons_requiring_access_text' is only visible on the task/ritm, and not on the catalog page itself? 

"persons_requiring_access_text" should be visible over catalog form, RITM and task. 

Is it not visible ?

Community Alums
Not applicable

It needs to be hidden because it's just a text box that collects the information based on the list collector, which is the visible part of the form. I can't find another way to pull user AND user_name from a list collector and put it into the ritm/task.