Background Script to update Date Fields

Community Alums
Not applicable

Hi all,

 

I have to update some records in Change table i.e i have to set work start with created date , work end with created +30 seconds .

I have written like below but not working

Can you please help

var gr= new GlideRecord('change_request');
gr.addEncodedQuery('short_descriptionLIKEISPW-change^active=true^sys_created_by=ispw');
gr.setLimit(2);
gr.query();
while(gr.next())
{
gr.work_start = gr.sys_created_on;
gr.requested_by_date = gr.sys_created_on;
var date = new GlideDateTime('sys_created_on');
gr.work_end = date.addSeconds(10);
gr.update();
}

1 ACCEPTED SOLUTION

VigneshMC
Mega Sage

Try

var gr= new GlideRecord('change_request');
gr.addEncodedQuery('short_descriptionLIKEISPW-change^active=true^sys_created_by=ispw');
gr.setLimit(2);
gr.query();
while(gr.next())
{
gr.work_start = gr.sys_created_on;
gr.requested_by_date = gr.sys_created_on;
var date = new GlideDateTime(gr.sys_created_on);
date.addSeconds(30);
gr.setValue('work_end', date.getValue());
//gs.print(date.getValue());
gr.update();
}

View solution in original post

17 REPLIES 17

Community Alums
Not applicable

yes

It works fine for me even with setworkflow false.

var gr= new GlideRecord('change_request');
gr.addEncodedQuery('gr.addEncodedQuery('short_descriptionLIKEISPW-change^active=true^sys_created_by=ispw');
');
gr.setLimit(2);
gr.query();
while(gr.next())
{
gr.work_start = gr.sys_created_on;
gr.requested_by_date = gr.sys_created_on;
var date = new GlideDateTime(gr.sys_created_on);
date.addSeconds(30);
gr.setValue('work_end', date.getValue());
gr.setWorkflow(false);
gr.update();
}

ggg
Giga Guru

run the following in a background script and you will see that an error is thrown on a business rule validation:

 

-- look up that business rule

var gr= new GlideRecord('change_request');
//gr.addEncodedQuery('short_descriptionLIKEISPW-change^active=true^sys_created_by=ispw');
//gr.setLimit(2);
gr.addQuery('sys_id', 'c83c5e5347c12200e0ef563dbb9a7190');
gr.query();
while(gr.next())
    {
    gr.work_start = gr.sys_created_on;
    gs.info('mal1 work_start = ' + gr.work_start);
    gr.requested_by_date = gr.sys_created_on;
    gs.info('mal1 requested by = ' + gr.requested_by_date);
    var date = new GlideDateTime(gr.getDisplayValue('sys_created_on'));
    date.addSeconds(10);
    gs.info('mal1 date is ' + date);
    //var date = new GlideDateTime('sys_created_on');
    //gr.work_end = date.addSeconds(10);
    gr.setValue('work_end', date);
    gs.info('mal1 work end is ' + gr.work_end);
    /*Operation against file 'change_request' was aborted by Business Rule 'Actual Start/End Date Validation^c83c5e5347c12200e0ef563dbb9a7190'. Business Rule Stack:Actual Start/End Date Validation
[0:00:00.035] Total Time*/
    //gr.update();
}


Community Alums
Not applicable

yeah 

Recursive business rule call for 'xxx' on change_request:CHG0076814 is being ignored.  Business Rule Stack: xxx,xxx

what we need to with this

Ian Mildon
Tera Guru

Try changing the "while" section to this:

{
	gr.work_start = gr.sys_created_on;
	gr.requested_by_date = gr.sys_created_on;
	var date = new GlideDateTime(current.sys_created_on);
	date.addSeconds(10);
	current.work_end = date.getValue();
}

While I haven't tested this actual script, I have done similar date scripting. Let me know how it goes.