Get a first look at what's coming. The Developer Passport Australia Release Preview kicks off March 12. Dive in! 

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

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'
});

Not applicable

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

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  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

Not applicable

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

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

Thanks,

Sirraj