Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

How to push multiple values in multiple line text field in catalog.

Community Alums
Not applicable

Hi All,

I have one cat item with 4 fields. Req for (List Collector) & UserId, Dept, Title (Multiline Text)

Please have a look below.

find_real_file.png

 

I will select Abel Tuter first in list collector, then it should populate corresponding values in the below three fields. After that i will select another user Abraham Lincoln, the it should populate corresponding values in below three fields with comma separated to the existing.

How can i achieve this. Here is my code, it is working for single selection not for multiple.

Client Script :

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}

var getReqUser = g_form.getValue('requestd_for');
var ga = new GlideAjax('Populate_dept');
ga.addParam('sysparm_name', 'getUserDetails');
ga.addParam('sysparm_user_id', getReqUser);
ga.getXML(HelloWorldParse);

function HelloWorldParse(response) {
alert('In');
var answer = response.responseXML.documentElement.getAttribute("answer").split(',');
alert(answer);

g_form.setValue('uId', answer[0]);
g_form.setValue('ttle', answer[1]);
g_form.setValue('deprtmnt', answer[2]);
}
}

 

Script Include : 

var Populate_dept = Class.create();
Populate_dept.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserDetails: function() {
var userr = this.getParameter('sysparm_user_id');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', userr);
gr.query();
if (gr.next()) {
gs.log('Hi Sira');
return gr.user_name + ',' + gr.title + ',' + gr.department.toString();
}
},
type: 'Populate_dept'
});

 

Regards,

Sirraj

1 ACCEPTED SOLUTION

Even though you can't select multiple values at one time via this portal interface, the variable is still a list collector that is storing multiple values, so the script has to accommodate that.  The below client script will work.

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}

var getReqUser = g_form.getValue('requestd_for');
var ga = new GlideAjax('Populate_dept');
ga.addParam('sysparm_name', 'getUserDetails');
ga.addParam('sysparm_user_id', getReqUser);
ga.getXML(HelloWorldParse);

function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
answer = JSON.parse(answer);

g_form.setValue('uId', answer.user);
g_form.setValue('ttle', answer.title);
g_form.setValue('deprtmnt', answer.dept);
}
}

and the script include

var Populate_dept = Class.create();
Populate_dept.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserDetails: function() {
var obj = {};
obj.user = '';
obj.title = '';
obj.dept = '';
var userr = this.getParameter('sysparm_user_id');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', 'IN', userr);
gr.query();
while (gr.next()) {
if(obj.user == ''){
obj.user = gr.user_name.toString();
}
else{
obj.user = obj.user + ',' + gr.user_name.toString();
}
if(obj.title == ''){
obj.title = gr.title.toString();
}
else{
obj.title = obj.title + ',' + gr.title.toString();
}
if(obj.dept == ''){
obj.dept = gr.department.name.toString();
}
else{
obj.dept = obj.dept + ',' + gr.department.name.toString();
}
}
return JSON.stringify(obj);
},
type: 'Populate_dept'
});

View solution in original post

13 REPLIES 13

Even though you can't select multiple values at one time via this portal interface, the variable is still a list collector that is storing multiple values, so the script has to accommodate that.  The below client script will work.

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}

var getReqUser = g_form.getValue('requestd_for');
var ga = new GlideAjax('Populate_dept');
ga.addParam('sysparm_name', 'getUserDetails');
ga.addParam('sysparm_user_id', getReqUser);
ga.getXML(HelloWorldParse);

function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
answer = JSON.parse(answer);

g_form.setValue('uId', answer.user);
g_form.setValue('ttle', answer.title);
g_form.setValue('deprtmnt', answer.dept);
}
}

and the script include

var Populate_dept = Class.create();
Populate_dept.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserDetails: function() {
var obj = {};
obj.user = '';
obj.title = '';
obj.dept = '';
var userr = this.getParameter('sysparm_user_id');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', 'IN', userr);
gr.query();
while (gr.next()) {
if(obj.user == ''){
obj.user = gr.user_name.toString();
}
else{
obj.user = obj.user + ',' + gr.user_name.toString();
}
if(obj.title == ''){
obj.title = gr.title.toString();
}
else{
obj.title = obj.title + ',' + gr.title.toString();
}
if(obj.dept == ''){
obj.dept = gr.department.name.toString();
}
else{
obj.dept = obj.dept + ',' + gr.department.name.toString();
}
}
return JSON.stringify(obj);
},
type: 'Populate_dept'
});

Community Alums
Not applicable

I ll give a try and let you know Brad. Thanks for the script 🙂

Community Alums
Not applicable

Thank you Brad 🙂 It worked..!!

Regards,

Sirraj

Hi,

Seems similar to this question:

https://community.servicenow.com/community?id=community_question&sys_id=072b4de4dbf41450d82ffb243996198b

Regards
Ankur

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

Community Alums
Not applicable

Yes Ankur, we both only facing the issue. (ProjectMates).!

We will have a look and let you know the update:)

Thanks,

Sirraj