Set reference field value on catalog record producer via client script

JJG
Kilo Guru

Hello,

I have a reference field to the user table called subject_person. I would like its value to be set based on the first_name & last_name variable values when the form is submitted (see pic below). My script does not seem to be working when I check the record I created the subject_person field is blank. Any help is appreciated.

find_real_file.png

Client script: 

function onSubmit() {
var fullName = g_form.getValue('first_name')+" "+g_form.getValue('last_name');
g_form.setDisplay('subject_person',fullName);

}

1 ACCEPTED SOLUTION

Because you mention it's a record producer... you could use the Script field to retrieve the matching sys_user record. That's nicer then using a onSubmit Client Script.

For example in the Script field, you could do something like:

var grUser = new GlideRecord('sys_user');
grUser.addQuery('first_name', producer.first_name);
grUser.addQuery('last_name', producer.last_name);
grUser.setLimit(1);
grUser._query();

if(grUser._next()) {
	current.field_you_want_to_update = grUser.getUniqueValue(); // Or if it's not a reference, a string? Then grUser.getDisplayValue();
}

Be aware this only works well if you have an exact match. If there are 2 people with the same name, this doesn't work well.

If my answer helped you in any way, please then mark it as helpful.

Kind regards,
Mark
2020 ServiceNow Developer MVP

---

LinkedIn

 

Kind regards,

 

Mark Roethof

Independent ServiceNow Consultant

10x ServiceNow MVP

---

 

~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

LinkedIn

View solution in original post

13 REPLIES 13

You saved the day again Mark thank you!

Hi, This is not best practice to use gliderecord in client script. Thanks, Shrutika

I don't see a Client Script here. Can you explain? The script is for the Script field of the Record Producer.

Kind regards,
Mark
2020 ServiceNow Developer MVP

---

LinkedIn

 

Kind regards,

 

Mark Roethof

Independent ServiceNow Consultant

10x ServiceNow MVP

---

 

~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

LinkedIn

Quick follow up: if there is no match in the sys_user table is there a way for a pop up to show saying something like "There is no sys_user profile for this user"?

Abort submit could be done. Though maybe nicer to check for example when opening the record already? And what should then be done if there's no matching user record? Should it not be possible to submit the record? Or should a user record be created?
Auto create a user record would maybe also not be a great thing. What if a user excists as Abel Tutel, though the candidate form excists as A. Tuter, etc..

If my answer helped you in any way, please then mark it as helpful.

Kind regards,
Mark
2020 ServiceNow Developer MVP

---

LinkedIn

 

Kind regards,

 

Mark Roethof

Independent ServiceNow Consultant

10x ServiceNow MVP

---

 

~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

LinkedIn