
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-14-2016 11:09 AM
I have a need to make sure that the duration between the Begin Date and End Date does not exceed 1 year.
I used scripting before to make a date go out to xxx amount of days, but never to actually do a calculation between Begin and End dates
I don't have a Due Date field. I just have the Start and End Date field and I need to make sure that Duration cannot exceed 1 year.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-14-2016 11:22 AM
Hello Karen, its been a while hope you are well!
Here is some example code I have used before. Do you want the validation to happen on submit or as the user is inputting the data? My code below is based on an onChange of the Work End date on a task, but you could change it to an onSubmit can calculate and warn then.
Create a onChange client script for the End date:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue == '') {
return;
}
var starts = g_form.getValue('work_start');
startMillis = getDateFromFormat(starts, g_user_date_time_format);
var ends = newValue;
endMillis = getDateFromFormat(ends, g_user_date_time_format);
var minutes = (endMillis - startMillis) / (1000 * 60);
if(minutes > 480) {
alert('An Activity may only last 8 hours. You must enter multiple activities if the time required exceeds 8 hours.');
g_form.setValue('work_end', '');
}
}
Obviously you will need to calculate the a year to then compare for your alert. Thinking out loud an onSubmit may be better because you can prevent the save if it exceeds a year.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-14-2016 11:14 AM
Hi Karen,
What table is this on? We can write a before insert/update BR to check for the difference between the two dates and raise an error. Something like this: https://wiki.servicenow.com/index.php?title=Compare_Two_Date_Fields#Comparing_Two_Date_Fields&gsc.ta...

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-14-2016 11:17 AM
This is a Service Catalog item. Sorry should have mentioned that.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-14-2016 11:22 AM
Hello Karen, its been a while hope you are well!
Here is some example code I have used before. Do you want the validation to happen on submit or as the user is inputting the data? My code below is based on an onChange of the Work End date on a task, but you could change it to an onSubmit can calculate and warn then.
Create a onChange client script for the End date:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue == '') {
return;
}
var starts = g_form.getValue('work_start');
startMillis = getDateFromFormat(starts, g_user_date_time_format);
var ends = newValue;
endMillis = getDateFromFormat(ends, g_user_date_time_format);
var minutes = (endMillis - startMillis) / (1000 * 60);
if(minutes > 480) {
alert('An Activity may only last 8 hours. You must enter multiple activities if the time required exceeds 8 hours.');
g_form.setValue('work_end', '');
}
}
Obviously you will need to calculate the a year to then compare for your alert. Thinking out loud an onSubmit may be better because you can prevent the save if it exceeds a year.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-14-2016 11:30 AM
Thank you for the sample code. I will try this tomorrow. I have to prepare for a meeting. If it works for me, I will mark your response as Correct Answer. Thank you.
Karen