- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2020 04:50 AM
Hi All
I'm creating a UI page for end user input of a date.
Everything works fine until the Processing Script goes to read the value chosen in my date picker, it comes back as "undefined". However checking my logs I can clearly see that contract_ends is set to what I have chosen.
12:00:46.450 #276200 /ui_page_process.do Parameters ------------------------- sys_id=998a29a9dbbc185007cdfd431d961993 contract_ends,=28-05-2020
When the processing script kicks in my log states:
12:00:46.486 Unparseable date: "undefined": java.text.ParseException: Unparseable date: "undefined": java.text.DateFormat.parse(DateFormat.java:366)
I don't think I'm passing the contract_ends correctly...... Prior to adding the var statement in to my Processing Script I was getting:
12:40:27.374 Evaluator: org.mozilla.javascript.EcmaError: "contractends" is not defined.
I've also tried without ' marks and with " marks.
Here is my UI page:
HTML
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<g:ui_form>
<g:evaluate var="ritm_id">
var ritm_id = RP.getParameterValue("ritm_id");
ritm_id;
</g:evaluate>
<j:set var="jvar_i" value="0" />
<j:set var="jvar_ritm_sys_id" value="${ritm_id}" />
<table width="100%">
<input type="hidden" name="cancel_or_submit" id="cancel_or_submit" value=""/>
<input type="hidden" name="error" id="error" value="false"/>
<input type="hidden" name="ritm_sys_id" value="${jvar_ritm_sys_id}"/>
<tr>
<td width="50%">
<div class="form-group form-horizontal">
<div class="col-md-4 text-right">
<p><span style="font-family: helvetica; font-size: 10pt;">
Please input the new Contract end date:
<p></p>
</span></p>
</div>
<div class="col-md-8">
<g:ui_date id="contract_ends" name="contract_ends," value="${jvar_contract_ends}" onchange="datePicked(this.value);" label="${gs.getMessage('Select Date')}" />
</div>
</div>
</td>
</tr>
<tr id="dialogbuttons">
<td colspan="4" align="right">
<g:dialog_buttons_ok_cancel ok_text="${gs.getMessage('OK')}" ok="return actionOK();" cancel="return cancel();"/>
</td>
</tr>
</table>
</g:ui_form>
</j:jelly>
Client Script
var contractends = gel("contract_ends").value;
function actionOK() {
var c = gel('cancel_or_submit');
c.value = "submit";
var e = gel('error');
if(e.value == "false")
return true;
else return false;
}
function cancel() {
var c = gel('cancel_or_submit');
c.value = "cancel";
return true;
}
Processing Script
var contractends = 'contract_ends'.value;
if(cancel_or_submit == "submit" && error == "false") {
var app = new GlideRecord("sc_req_item");
app.get(ritm_sys_id);
app.addQuery('u_new_contractor_end_date',request);
app.query();
app.setValue('u_new_contractor_end_date', contractends);
app.update();
}
Any advice or assistance is appreciated 🙂 I'm fairly new to scripting and coding.
Thanks
Anita
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2020 06:15 AM
Hi Anita,
so you are now able to get date; but not setting properly in target date field
please set it as below; converting to glide date time and then get date
var contractends = date;
var gdt = new GlideDateTime(contractends);
contractends = gdt.getDate();
Mark ✅ Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2020 05:52 AM
Thanks Ankur. I now don't get any errors and my processing script seems to go all the way through as I have some log statements (simply so I could see how far it was getting before it was failing).
However my output in to my RITM field is still blank, but it should be a date....? I tried it in to a string field also but its still blank.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2020 05:57 AM
Hi Anita,
Did you try adding logs and check in processing script that date is available in that
Why these 2 lines are present; I have removed those and try now; you are already doing query using get()
app.addQuery('u_new_contractor_end_date',request);
app.query();
Updated code:
var contractends = date;
gs.info('Date is: ' + contractends);
if(cancel_or_submit == "submit" && error == "false") {
var app = new GlideRecord("sc_req_item");
app.get(ritm_sys_id);
app.setValue('u_new_contractor_end_date', contractends);
app.update();
}
Mark ✅ Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2020 06:03 AM
So I added above and in my log I get:
14:00:44.281 Date is: 29-05-2020
And my field on my RITM now has a date 🙂
All be it the date is 10-11-0034. I suspect I need to perform a glidedatetime query? I expected because I was using a date picker the formatting would be ok 😞
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2020 06:15 AM
Hi Anita,
so you are now able to get date; but not setting properly in target date field
please set it as below; converting to glide date time and then get date
var contractends = date;
var gdt = new GlideDateTime(contractends);
contractends = gdt.getDate();
Mark ✅ Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2020 06:31 AM
All working. Thank you so much Ankur, you're a diamond!