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

How to populate work notes based on String value(due to event) through ui page on ui action button?

Gopi12
Tera Contributor

Hi @Ankur Bawiskar ,

 

Could please help me in the below script.

Ui action script:

 

   function showEvents() {
       var gm = new GlideModal('event_messages');

       gm.setTitle('Show title');

       gm.setPreference('sysparm_sysid', g_form.getUniqueValue());
       gm.render();


   }
 
Ui Page script:
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<h3>Event table</h3>
 <g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().sysparm_sysid"/>
<g:evaluate jelly="true" object="true">
   var gr = new GlideRecord("em_alert");
 gr.addQuery("u_case",jelly.sysparm_sysid);
 gr.addQuery("work_notesLIKEdue to event");
   
 gr.query();
   gr;
</g:evaluate>
<table border="1">
  <tr><td colspan="2">Event Messages</td></tr>
  <tr>
   <th>Number</th>
   <th>Work Notes</th>
  </tr>
 <j2:while test="$[gr.next()]">
  <tr>
  <td>$[gr.number]</td>
  <td>$[gr.work_notes.getJournalEntry(-1)]</td>
  </tr>
 </j2:while>
 </table>
 <style>
  td, th{
   padding: 10px;
  }
 </style>
</j:jelly>
 
Thanks & Regards,
Gopi.
2 ACCEPTED SOLUTIONS

@Gopi12 

got it

try this

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
	<h3>Event table</h3>
	<g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().sysparm_sysid"/>
	<g:evaluate jelly="true" object="true">

		var rec = new GlideRecord('em_alert');
		rec.addQuery('u_case', jelly.sysparm_sysid);
		rec.query();
		if(rec.next()){
		var gr = new GlideRecord("sys_journal_field");
		gr.addQuery("element_id",rec.sys_id);
		gr.addEncodedQuery("valueLIKEdue to event");
		gr.addQuery("element","work_notes");
		gr.query();
		gr;
		}
	</g:evaluate>
	<table border="1">
		<tr><td colspan="2">Event Messages</td></tr>
		<tr>
			<th>Number</th>
			<th>Work Notes</th>
		</tr>
		<j:while test="${gr.next()}">
			<tr>
				<td>${gr.number}</td>
				<td>${gr.value}</td>
			</tr>
		</j:while>
	</table>
	<style>
		td, th{
		padding: 10px;
		}
	</style>
</j:jelly>

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

View solution in original post

Hello @Gopi12 ,

Please try with the modified script below,

 

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
  <h3>Event table</h3>
  <g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().sysparm_sysid"/>
  <g:evaluate jelly="true" object="true">

    var rec = new GlideRecord('em_alert');
    rec.addQuery('u_case', jelly.sysparm_sysid);
    rec.query();
    
    var alertSysIds = []; // Array to store alert sys_ids

    while (rec.next()) {
      alertSysIds.push(rec.sys_id.toString());
    }

    var gr = new GlideRecord("sys_journal_field");
    gr.addQuery("element_id", "IN", alertSysIds.join(','));
    gr.addEncodedQuery("valueLIKEdue to event");
    gr.addQuery("element", "work_notes");
    gr.query();
    gr;
  </g:evaluate>
  <table border="1">
    <tr><td colspan="2">Event Messages</td></tr>
    <tr>
      <th>Number</th>
      <th>Work Notes</th>
    </tr>
    <j:while test="${gr.next()}">
      <tr>
        <td>${gr.number}</td>
        <td>${gr.value}</td>
      </tr>
    </j:while>
  </table>
  <style>
    td, th{
      padding: 10px;
    }
  </style>
</j:jelly>

 

View solution in original post

25 REPLIES 25

Hello @Gopi12 ,

Certainly, if you want to display the number field of the em_alert records instead of the sys_id, you can modify the script accordingly. Here's the updated script:

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
  <h3>Event table</h3>
  <g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().sysparm_sysid"/>
  <g:evaluate jelly="true" object="true">

    var rec = new GlideRecord('em_alert');
    rec.addQuery('u_case', jelly.sysparm_sysid);
    rec.query();
    
    var alertNumbers = []; // Array to store alert numbers

    while (rec.next()) {
      alertNumbers.push(rec.number.toString());
    }

    var gr = new GlideRecord("sys_journal_field");
    gr.addQuery("element_id", "IN", alertNumbers.join(','));
    gr.addEncodedQuery("valueLIKEdue to event");
    gr.addQuery("element", "work_notes");
    gr.orderBy("element_id"); // Order by alert number
    gr.query();

    var uniqueAlerts = {}; // Use an object to track unique alerts

  </g:evaluate>
  <table border="1">
    <tr><td colspan="2">Event Messages</td></tr>
    <tr>
      <th>Alert Number</th>
      <th>Work Notes</th>
    </tr>
    <j:while test="${gr.next()}">
      <tr>
        <td>${gr.element_id}</td>
        <td>${gr.value}</td>
      </tr>
    </j:while>
  </table>
  <style>
    td, th{
      padding: 10px;
    }
  </style>
</j:jelly>

 

In this modification, I replaced the usage of sys_id with number for the em_alert records. Now, the script should display the alert numbers instead of the sys_ids.

Also if this modification works for you consider marking my solution as helpful and Accept my solution as well.

Thanks,

Aniket




Gopi29
Tera Contributor

Hi @Ankur Bawiskar ,

I am getting all the work notes, but I need to get only specific work notes.

Example: if work notes contain "test" we need to get only those work notes entries.

Thanks in advance...!

@Gopi29 

It seems question is asked by @Gopi12  but some other person is responding

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

Hi @Ankur Bawiskar ,

 

Sorry that was different account person is same

 

Thanks,

Gopi

@Gopi12 

try this

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
	<h3>Event table</h3>
	<g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().sysparm_sysid"/>
	<g:evaluate jelly="true" object="true">
		var gr = new GlideRecord("sys_journal_field");
		gr.addQuery("element_id",jelly.sysparm_sysid);
		gr.addEncodedQuery("valueLIKEdue to event");
		gr.addQuery("element","work_notes");
		gr.query();
		gr;
	</g:evaluate>
	<table border="1">
		<tr><td colspan="2">Event Messages</td></tr>
		<tr>
			<th>Number</th>
			<th>Work Notes</th>
		</tr>
		<j:while test="${gr.next()}">
			<tr>
				<td>${gr.number}</td>
				<td>${gr.value}</td>
			</tr>
		</j:while>
	</table>
	<style>
		td, th{
		padding: 10px;
		}
	</style>
</j:jelly>

If my response helped please mark it correct and close the thread so that it benefits future readers.

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