GlideRecord in ui page

john0312
Kilo Contributor

<g:evaluate var="jvar_gr" object="true">

var gr = new GlideRecord('sys_user_grmember');

gr.addQuery('group','8e136dbe4fe6560093f3e0024210c786');                 // To get users from this group

gr.query();

while(gr.next()){

  var jobCR3= new GlideRecord('sysapproval');

        jobCR3.addQuery('document_id','361c4b074f2e560093f3e0024210c7ea');

        jobCR3.addQuery('approver',gr.user);                                                                           // To select the approval user who are from above group.

        jobCR3.addQuery('state','approved');

        jobCR3.orderBy('sys_created_on');

        jobCR3.query();

}

  jobCR3;

</g:evaluate>

<j:while test="${jvar_gr.next()}">

  <p>${jobCR3.getDisplayValue('approver')}</p>

  </j:while>

I am getting result as 1 user. But I should get 2 users. When I run same script in background script I am getting result as 2 users (which is correct).

Script ran in background script:

var gr = new GlideRecord('sys_user_grmember');

gr.addQuery('group','8e136dbe4fe6560093f3e0024210c786');

gr.query();

while(gr.next()){

  var jobCR3= new GlideRecord('sysapproval');

        jobCR3.addQuery('document_id','361c4b074f2e560093f3e0024210c7ea');

        jobCR3.addQuery('approver',gr.user);

        jobCR3.addQuery('state','approved');

        jobCR3.orderBy('sys_created_on');

        jobCR3.query();

while(jobCR3.next()){

gs.print(jobCR3.getDisplayValue('approver'));

            }

}

1 ACCEPTED SOLUTION

Actually, you'll probably want this:



<g:evaluate object="true">


      var gr = new GlideRecord('sys_user_grmember');


      gr.addQuery('group', '8e136dbe4fe6560093f3e0024210c786');       // To get users from this group


      gr.query();


</g:evaluate>




<j:while test="${gr.next()}">


      <g:evaluate object="true">


              var jobCR3 = new GlideRecord('sysapproval');


              jobCR3.addQuery('document_id', '361c4b074f2e560093f3e0024210c7ea');


              jobCR3.addQuery('approver', gr.user);     // To select the approval user who are from above group.


              jobCR3.addQuery('state', 'approved');


              jobCR3.orderBy('sys_created_on');


              jobCR3.query();


      </g:evaluate>




      <j:while test="${jobCR3.next()}">


              <p>${jobCR3.approver.getDisplayValue()}</p>


      </j:while>


</j:while>







View solution in original post

12 REPLIES 12

john0312
Kilo Contributor

Hey David, is there any way to get the result as shown below:



If I get result as:   user1, user2, user3



Can we assign each user to different variable:   u1 = user1; u2 = user2; u3= user3



So that we can print in UI page as


Name of user1 =   ${u1} ,


Name of user2 =   ${u2},


.


.


.


Sure:



XML:


<g:evaluate object="true">


      var gr = new GlideRecord('sys_user_grmember');


      gr.addQuery('group', '8e136dbe4fe6560093f3e0024210c786');       // To get users from this group


      gr.query();


</g:evaluate>




<div id="jvars"></div>




<script>


      var userArray = [];


      var count = 0;


      var myKey = "u";




      addLateLoadEvent(function()


      {


              setJVAR_values(userArray);


      });


</script>




<j:while test="${gr.next()}">


      <g:evaluate object="true">


              var jobCR3 = new GlideRecord('sysapproval');


              jobCR3.addQuery('document_id', '361c4b074f2e560093f3e0024210c7ea');


              jobCR3.addQuery('approver', gr.user);     // To select the approval user who are from above group.


              jobCR3.addQuery('state', 'approved');


              jobCR3.orderBy('sys_created_on');


              jobCR3.query();


      </g:evaluate>




      <j:while test="${jobCR3.next()}">


              <script>count++; myKey = ("u" + count.toString()); var obj = {}; obj[myKey] = "${jobCR3.approver.getDisplayValue().toString()}"; userArray.push(obj);</script>


      </j:while>




</j:while>

















CLIENT SCRIPT:


function setJVAR_values(userArray)


{


      var u = "";


      var str = '';


      // console.debug('userArray: ' + JSON.stringify(userArray));


     


      for (var i = 0; i < userArray.length; i++)


      {


              u = 'u' + (i+1).toString();


              str += '<j:set var="jvar_' + u + '" value="' + userArray[i][u] + '"></j:set>';


      }




      gel('jvars').innerHTML = str;


}







Then you can use ${jvar_u1} and ${jvar_u2}, etc...


Hi i was trying to print somthing similar, but i was not able to print all the users like ${jvar_u1} etc

can you please help me with that

how can i get data from <j:set> tag to print on the UI page?