- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-09-2017 01:51 PM
Hi,
I have a Training Class Registration application with Attendee,Training Class, & Training Room tables. A Record Producer form (on Attendee table) allows someone to register for a Class by entering the Attendee Name and selecting a Training Class. The Attendee Name variable references the User table. The Training Class variable references the Training Class table. Training Class variable is mapped to the Training Class table and already includes a reference qualifier (java script call to script includes) that sets the filter to only show Classes with a Status of "Open".
I have a new requirement to check if an Attendee has already registered for a Class that they are trying to select again. Before the Record Producer is submitted, I would need to check the Training Class (sys id) selected against the Attendee Name (User sys id) selected and I assume query the Class related list of Attendees to check if the Attendee sys id is listed. If a match is found, show alert that "Attendee has already registered".
Can this be done in a Business Rule with glide query or is there another way to accomplish it? Any insight into how to do this would be greatly appreciated.
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-11-2017 11:07 AM
One more correction and you are all set.
var RegisterAttendee = Class.create();
RegisterAttendee.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getAttendee: function() {
gs.log('++++++++++Inside the script include++++++++++++++');
var an = this.getParameter('sysparm_attendee_name');
var tc = this.getParameter('sysparm_class_name'); // Correction
var att = new GlideRecord('u_attendee');
gs.log('++++++++++tc ++++++++++++++'+tc );
gs.log('++++++++++an ++++++++++++++'+an);
att.addQuery('u_attendee_name',an+'');
att.addQuery('u_training_class',tc+'');
att.query();
if(att.next()){
gs.log('++++++++++Inside the if statement+++++++++att.u_attendee_name+++++'+att.u_attendee_name);
if(att.u_attendee_name == an && att.u_training_class == tc){
return true;
}
else {
return false;
}
}
return false; // Added a return false here
}, // you missed a comma here
type: 'RegisterAttendee'
});
Please mark this response as correct or helpful if it assisted you with your question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-11-2017 10:29 AM
Another nice catch on the underscore! Thank you!
I ran two tests. One with an Attendee already in the Class/related Attendee List and one where the Attendee was not in the List.
TEST 1: Attendee in the related Attendee List already.
Click Submit button
The ga.getAnswer Client Script Alert displayed True
The "Attendee Already Registered" Client Script Alert displayed
The Attendee record was generated.
gs.log:
TEST 2: Attendee NOT in the related Attendee List already.
Click Submit button
The ga.getAnswer Client Script Alert displayed null
The "Attendee Already Registered" Client Script Alert displayed
The Attendee record was generated.
gs.log

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-11-2017 11:07 AM
One more correction and you are all set.
var RegisterAttendee = Class.create();
RegisterAttendee.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getAttendee: function() {
gs.log('++++++++++Inside the script include++++++++++++++');
var an = this.getParameter('sysparm_attendee_name');
var tc = this.getParameter('sysparm_class_name'); // Correction
var att = new GlideRecord('u_attendee');
gs.log('++++++++++tc ++++++++++++++'+tc );
gs.log('++++++++++an ++++++++++++++'+an);
att.addQuery('u_attendee_name',an+'');
att.addQuery('u_training_class',tc+'');
att.query();
if(att.next()){
gs.log('++++++++++Inside the if statement+++++++++att.u_attendee_name+++++'+att.u_attendee_name);
if(att.u_attendee_name == an && att.u_training_class == tc){
return true;
}
else {
return false;
}
}
return false; // Added a return false here
}, // you missed a comma here
type: 'RegisterAttendee'
});
Please mark this response as correct or helpful if it assisted you with your question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-11-2017 11:23 AM
Works great! I assume I will be able to replace the alert with a confirm in the Client script to give the requester the choice of clicking OK to generate the Attendee record or Cancel to NOT submit, correct?
Thanks for all your help with this Sanjiv. The Community is a great resource!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-11-2017 11:27 AM
Your Welcome. Yes You can use confirm function
Below is an example, from link http://wiki.servicenow.com/index.php?title=Client_Scripts#How_do_I_confirm_a_field_value_with_the_us...
4.5 How do I confirm a field value with the user?
function onSubmit() { //This allows you to access fields from the referenced record var assignedTo = g_form.getReference('assigned_to'); var answer = confirm("The Assigned to is " + assignedTo.user_name + ". Is this correct?"); if (answer == true) { return false; } }
Please mark this response as correct or helpful if it assisted you with your question.