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.

ui macro and current record information

poyntzj
Kilo Sage

Thursday afternoon before a long weekend and I'd said I'd look at something for a colleague and now I regret it

We need to show the information from a "source" record, but the usual dot walking is doing some very odd things.- hi ticket logged

I said, "use something like a summarizer and do it yourself via a ui macro"

Well, in principle it is dead easy, but for some reason I am struggling to get the details of the current record across

In the "approval_summarizer_sc_request", there are the following lines

<?xml version="1.0" encoding="utf-8" ?>

<j:jelly trim="true" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">

      <tr>

              <td class="label_left" width="100%">

                      ${gs.getMessage('Summary of Request being approved')}:

                     

                      <g:label_spacing/>                              

              </td>

      </tr>

      <g:evaluate var="jvar_total" expression="      

              var sc_request = ${ref}.sysapproval;

gs.log(sc_request);

when I look at an approval for a request, I see an entry in the log for the sys_id

From there it is dead easy to carry on and do what we need -we know as we have updated a couple of these.

I called this a new name and inserted it as a new ui macro

I have made a formatter linking to this new ui macro

I run it I see the text on the screen, but nothing in the log to show me the value from the field

(If I remove lines 12/13 I do see "are you there" in the logs

The code is

<?xml version="1.0" encoding="utf-8" ?>

<j:jelly trim="true" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">

      <tr>

              <td class="label_left" width="100%">

                      ${gs.getMessage('Summary of tpip being approved')}:

                      <g:label_spacing/>                              

              </td>

      </tr>

      <g:evaluate var="jvar_total" expression="      

gs.log('are you there ?');

              var sc_request = ${ref}.u_inherited_tpip_request;

gs.log(sc_request);

So my questions are

1.   How do I pass the current record information to the script - If get this current ID I can get the field value I need

2.   Better still,. how I do pass the value from the u_inherited_tpip_request

There is scarce info about ui_macro's and on the pages I do see for Jelly etc I do not see any real reference to ${ref}, but the examples do use it

Cheers

5 REPLIES 5

We ended up opening a ticket as well and our issue was solved. The trick for mine was running the UI Macro in Phase 2 (g2/j2) which you were doing in your sample. I just had to reference it via "current.field". Now i'm working to see if I can utilize GlideJellyRunner to invoke it from a client script (with ajax call) to have the UI Macro refresh on the form once a field changes. Hopefully this helps!



<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">


  <g2:evaluate var="jvar_room" expression="


  var room = current.u_conference_room;


  room;


  "/>


  <g2:evaluate var="services" jelly="true" expression="


  var my_services = [];


  if (jelly.jvar_room != ''){


  var serv1 = new GlideRecord('u_m2m_rooms_serv');


  serv1.addQuery('u_room', jelly.jvar_room);


  serv1.orderBy('u_service.u_service_type');


  serv1.query();


  while (serv1.next())


  my_services.push(serv1.u_service.u_service_type.sys_id.toString());


  }




  var services = new GlideRecord('u_service_types');


  if (my_services != '')


  services.addEncodedQuery('sys_idIN' + my_services);


  services.orderBy('u_name');


  services.query();


  "/>


  <style>


  .th {font-weight:normal;font-size:12px;}


  </style>


  <g2:ui_table>


  <j2:if test="$[services.hasNext()]" >


  <TR>


  <TH vAlign="bottom" align="left">


  Available Services


  </TH>


  </TR>


  </j2:if>


  <j2:while test="$[services.next()]">


  <tr>


  <td colspan="2">


  <g:ui_spacer pixels="6"/>


  <g:ui_checkbox name="service_$[services.sys_id]" id="service_$[services.sys_id]" class="checkbox_list_mechanic"/>


  <label class="label_list_mechanic" for="service_$[services.sys_id]"> $[HTML:services.getDisplayValue()] </label>


  </td>


  </tr>


  </j2:while>


  </g2:ui_table>