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.

Facing calling UI Page from UI Action

Afifa2
Tera Expert

I have created a custom UI Action "Compliance Certificate" on Entity Type. This UI action should pull all the entities, its controls, compliant controls and Non-Compliant controls in a pdf format.

My UI Page :

 

 

 

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<!-- Header -->
  <p>To,</p>
  <p>The Compliance Reviewer,</p>

  <!-- Compliance Report Information -->
  <p>COMPLIANCE REPORT FOR THE PERIOD QTR-1 (January-2024 to Feb-2024)</p>

  <!-- Confirmation Statement -->
  <p>I am in adherence to applicable statutory / regulatory obligations owned by me</p>
<p>A summary of the compliance report covering partial and non-compliance controls are given below</p>
<j:set var="jvar_doc_id" value="${RP.getParameterValue('sysparm_sys_id')}"/>

   <g:evaluate var="jvar_now_entity" object="true">
       var eng=new GlideRecord('sn_grc_m2m_profile_profile_type');
       eng.addEncodedQuery('profile_type=${jvar_doc_id}');
	   eng.query();
	   eng;
   </g:evaluate>
   <div align="center">
   <table align="center" style="border:none;margin-left:auto;margin-right:auto;width: 70%;">
       <tbody>
           <tr style="height:0pt;">
               <td style="border:solid#000000 1pt;vertical-align:top;background-color:#4472c4;padding:5pt;">
                   <p style="font-size:11pt;font-family:Calibri,sans-serif;color:#ffffff;background-color:transparent;font-weight:700;">Compliance Verticle</p>
               </td>
               <td style="border:solid#000000 1pt;vertical-align:top;background-color:#4472c4;padding:5pt;">
                   <p style="font-size:11pt;font-family:Calibri,sans-serif;color:#ffffff;background-color:transparent;font-weight:700;">Control Number</p>
               </td>
               <td style="border:solid#000000 1pt;vertical-align:top;background-color:#4472c4;padding:5pt;">
                   <p style="font-size:11pt;font-family:Calibri,sans-serif;color:#ffffff;background-color:transparent;font-weight:700;">Complaint Control</p>
               </td>
               <td style="border:solid#000000 1pt;vertical-align:top;background-color:#4472c4;padding:5pt;">
                   <p style="font-size:11pt;font-family:Calibri,sans-serif;color:#ffffff;background-color:transparent;font-weight:700;">Non-Compliant Control </p>
               </td>
               <td style="border:solid#000000 1pt;vertical-align:top;background-color:#4472c4;padding:5pt;">
                   <p style="font-size:11pt;font-family:Calibri,sans-serif;color:#ffffff;background-color:transparent;font-weight:700;">Compliance Score</p>
               </td>
               
               </tr>


<j:while test="${jvar_now_entity.next()}">
<g:evaluate var="jvar_now_entity_id" jelly="true" object="true">
var id=jelly.jvar_now_entity.sys_id;
var first_gr=new GlideRecord('sn_grc_m2m_profile_profile_type');
first_gr.get(id)
var control_gr=new GlideRecord('sn_grc_profile');
control_gr.get(first_gr.profile);
control_gr
</g:evaluate>

<g:evaluate var="jvar_now_control_no" jelly="true" object="true">
var id=jelly.jvar_now_entity_id.sys_id;
var control_gr=new GlideRecord('sn_compliance_control');
control_gr.addEncodedQuery('profile='+id);
control_gr.query();
control_gr.getRowCount();
</g:evaluate>
<g:evaluate var="jvar_now_control_no_comp" jelly="true" object="true">
var id=jelly.jvar_now_entity_id.sys_id;
var control_gr=new GlideRecord('sn_compliance_control');
control_gr.addEncodedQuery('profile='+id+'^status=compliant');
control_gr.query();
control_gr.getRowCount();
</g:evaluate>
<g:evaluate var="jvar_now_control_no_non_comp" jelly="true" object="true">
var id=jelly.jvar_now_entity_id.sys_id;
var control_gr=new GlideRecord('sn_compliance_control');
control_gr.addEncodedQuery('profile='+id +'^status=non_compliant');
control_gr.query();
control_gr.getRowCount();
</g:evaluate>
           <tr style="height:0pt;">
               <td style="border:solid#000000 1pt;vertical-align:top;padding:5pt;">
                   <p style="font-size:11pt;font-family:Calibri,sans-serif;color:#000000;background-color:transparent;">${jvar_now_entity_id.getValue('name')}</p>
               </td>
               <td style="border:solid#000000 1pt;vertical-align:top;padding:5pt;">
                   <p style="font-size:11pt;font-family:Calibri,sans-serif;color:#000000;background-color:transparent;">${jvar_now_control_no}</p>
               </td>
               <td style="border:solid#000000 1pt;vertical-align:top;padding:5pt;">
                   <p style="font-size:11pt;font-family:Calibri,sans-serif;color:#000000;background-color:transparent;">${jvar_now_control_no_comp}</p>
               </td>
               <td style="border:solid#000000 1pt;vertical-align:top;padding:5pt;">
                   <p style="font-size:11pt;font-family:Calibri,sans-serif;color:#000000;background-color:transparent;">${jvar_now_control_no_non_comp}</p>
               </td>
               <td style="border:solid#000000 1pt;vertical-align:top;padding:5pt;">
                   <p style="font-size:11pt;font-family:Calibri,sans-serif;color:#000000;background-color:transparent;">${jvar_now_entity_id.getValue('compliance_score')}</p>
               </td>
		   </tr>
</j:while>
</tbody>
   </table>
   </div>

   <p>Yours Sincerely,</p>
  <p>Compliance Owner</p>

</j:jelly>

 

 

 

 

My UI Action:

 

 

 

 

function openCustomPage() {
var url ='sn_compliance_compliance_report.do?sysparm_sys_id='+g_form.getUniqueValue();
top.window.open(url);

 

 

 

}
Currently its not calling the UI page .
Also please let me know if I am missing anything else to generate the details mentioned in UI page in pdf format.
1 ACCEPTED SOLUTION

Afifa2
Tera Expert

My script was fine I got it sorted I was not calling the function properly in my UI action

 

View solution in original post

2 REPLIES 2

Danish Bhairag2
Tera Sage

Hi @Afifa2 ,

 

Plz check this post on how to call a UI page from UI action

https://www.servicenow.com/community/itsm-forum/code-to-call-ui-page-from-ui-action-button/m-p/51738...

 

  1. function popupDispList() {
  2. var gdw = new GlideDialogWindow('UI page name');
  3. gdw. setTitle('Incidents');
  4. gdw. setPreference('table', 'incident_list');
  5. gdw. setPreference('sysparm_view', 'default');
  6. gdw. render();

 

Thanks,

Danish

Afifa2
Tera Expert

My script was fine I got it sorted I was not calling the function properly in my UI action