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

xiaix
Tera Guru

There's a reason why your background script is fine and your other one isn't.



Background you're keeping a while() loop within a parent while() loop, which is why it's working.



The one that's not working (jelly one), you're not doing that, hence the original object just keeps getting overwritten.   You'll only ever end up with 1 result every time.



See if this works:



<g:evaluate object="true">




      var jobCR3;


      var gr = new GlideRecord('sys_user_grmember');


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


      gr.query();


     


      if (gr.next())


      {


              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>









john0312
Kilo Contributor

Hi David,



I tried using while() loop in jelly one also as i used in background script. But still I am getting 1 user record as result.


This also will work:



<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:if test="${gr.next()}">


      <g:evaluate object="true">


              var jobCR3;


              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:if>







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>







john0312
Kilo Contributor

It worked. Thanks David.