- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-03-2016 03:55 AM
Hi Guys
I have created a custom app (Case Management Tool) and I have a have a requirement that I would be fairly simple, get the users age in years based on their date of birth. This is a scoped application, which changes the script you can use. So far I have developed a simple business rule:
(function executeRule(current, previous /*null when async*/) {
var dateToday = new GlideDate(); // tried with and without .getDisplayValue()
var d = new GlideDuration();
d = GlideDate.subtract(dateToday,current.date_of_birth);
gs.addInfoMessage(d.getDisplayValue());
})(current, previous);
I get this error:
Error running business rule 'Get Age on x_crcc_casetrack_v_client:CLI0001771, exception: org.mozilla.javascript.EvaluatorException: Can't find method com.glide.glideobject.GlideDateTime.subtract(com.glide.script.fencing.ScopedGlideDate,com.glide.script.glide_elements.GlideElementGlideObject). (sys_script.cbec1e6a4fe12e40a4cb0ed11310c72d; line 4)
On the surface it seems to not like the GlideDate.subtract call. Note sure if I'm going about this all the wrong way. At the moment I am placing the output into a info message but it will return to a text field when completed. Any suggestions?
Solved! Go to Solution.
- Labels:
-
Service Mapping
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-03-2016 04:55 AM
Try something like what i have below. Using GlideDateTime functions normally are more helpful in doing something like you are trying. http://wiki.servicenow.com/?title=GlideDateTime#getYearLocalTime.28.29
(function executeRule(current, previous /*null when async*/) {
var today = new GlideDateTime();
var todayYear = today.getYearLocalTime();
var bday = new GlideDateTime(current.date_of_birth.toString());
bdayYear = bday.getYearLocalTime();
var age = todayYear - bdayYear;
gs.addInfoMessage(age);
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-03-2016 04:55 AM
Try something like what i have below. Using GlideDateTime functions normally are more helpful in doing something like you are trying. http://wiki.servicenow.com/?title=GlideDateTime#getYearLocalTime.28.29
(function executeRule(current, previous /*null when async*/) {
var today = new GlideDateTime();
var todayYear = today.getYearLocalTime();
var bday = new GlideDateTime(current.date_of_birth.toString());
bdayYear = bday.getYearLocalTime();
var age = todayYear - bdayYear;
gs.addInfoMessage(age);
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-03-2016 05:51 AM
Yep, that works perfectly, thank you!