Service Portal Developement

sagar patil2312
Tera Contributor

I am trying to develope servicenow portal my scenario is that when i create the incident by caller who is system administratior from service portal at that time it will be populate service portal thats why i am writing code in

SERVICE PORTAL LIKE THIS 

(function() {
  /* populate the 'data' object */
  /* e.g., data.table = $sp.getValue('table'); */
data.Inc = [];
 var grInc = new GlideRecord("incident");
gs.debug();
gs.info("Incident starting to create");
grInc.addQuery('caller_id' + gs.getUserID());
grInc.query();
while(grInc.next()){
gs.info('Incident Found');
data.number = grInc.number.toString();
data.short_description = grInc.short_description.toString();
data.caller_id = grInc.getValue(caller_id);
  data.Inc.push(json);
}
 
})()
 
IN HTML TEMPLATE I WRITE THE CODE LIKE THIS.
<div>
<!-- your widget template -->
<h1>
Incident Details
</h1>
<p>
You Will get Incident Details
</p>
<table>
<tr>
<th>number</th>
<th>short Description</th>
<th>caller</th>
</tr>
<tr>
<td>{{data.number}}</td>
<td>{{data.short_description}}</td>
<td>{{data.caller_id}} </td>
</tr>
</table>

</div>
 
AND MY UNEXPECTED TESULT IS

Incident Details

You Will get Incident Details

number short Description caller

 

 

WHY INCIDENT IS DATA IS NOT POPULATE IN THIS SCENARIO PLEASE HELP ME TO GET OUT OF THIS.

2 ACCEPTED SOLUTIONS

Community Alums
Not applicable

Hi @sagar patil2312 ,

Here in your script the issue is 

Inside while loop yoi are doing

grInc.getValue(caller_id)

Which is not correct instead of that you have to do like

grInc.getValue('caller_id');

It should be in string 

 

Please mark my answer correct and helpful if this works for you 

 

Thanks and Regards 

Sarthak 

View solution in original post

i dont think your query line is right....  line 5 in the server script, id adjust this to:

grInc.addQuery('caller_id', gs.getUserID());

View solution in original post

13 REPLIES 13

Jeffrey Siegel
Mega Sage

For service portal, why dont you use the pre-built widget for this?  The Data Table from Instance Definition widget should satisfy your needs. it will show a list of records, you can configure the conditions in the instance options using the filter,  which is just a encoded query, and then you can choose the columns displayed under the fields section.

Community Alums
Not applicable

Hi @sagar patil2312 ,

I tried your problem in my PDI and it works for me use below code 

HTML 

<div>
<!-- your widget template -->
<h1>
Incident Details
</h1>
<p>
You Will get Incident Details
</p>
<table>
<tr>
<th>number</th>
<th>short Description</th>
<th>caller</th>
</tr>
<tr>
<td>{{data.number}}</td>
<td>{{data.shortDescription}}</td>
<td>{{data.caller_id}} </td>
</tr>
</table>

</div>

Server Side Script 

(function() {
  /* populate the 'data' object */
  /* e.g., data.table = $sp.getValue('table'); */
 var grInc = new GlideRecord("incident");
grInc.addQuery('caller_id' + gs.getUserID());
grInc.query();
while(grInc.next()){
gs.info('Incident Found');
data.number = grInc.number.toString();
data.shortDescription = grInc.short_description.toString();
data.caller_id = grInc.getDisplayValue('caller_id');
}
 
})()

Result 

SarthakKashyap_0-1714562767901.png

 

Please mark my answer correct and helpful if this works for you

 

Thanks and Regards 

Sarthak

 

the way i see this, it would only show one record, i dont see it iterating through the array to get all incidents...  did you test with multiple incidents?

Community Alums
Not applicable

Hi @Jeffrey Siegel  

I tried with multiple records as well it is working fine for me, if you want I'll share you the code as well with multiple records.

 

Please mark my answer correct and helpful if this works for you

Thanks and Regards 

Sarthak