We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

Checking conditions before record addition though declarative UI action

MaharshiC
Tera Contributor

Hi,

 

I have 2 tables and I want to create bulk request from 'x_iem_tqa_work_request_items'

to 'x_iem_tqa_work_order' though declarative UI action. So I have written the below script and its creating records in '

x_iem_tqa_work_order' as expected. Now 'x_iem_tqa_work_request_items' has 2 additional fields - parent and state and now there is an additional condition that I need to apply - If there is any record in ''x_iem_tqa_work_request_items' that we select have a different parent or state than the others then we have to stop the process all together. What should be my approach in that case? Will I be able to add conditions to stop the entire insert process?
var requests='';
var items= new GlideRecord('x_iem_tqa_work_request_items');
items.addEncodedQuery('selected_work_items=true^associated_work_order_numberISEMPTY');
items.query();
while(items.next())
{
  requests=requests+','+items.sys_id;

}
	var order = new GlideRecord('x_iem_tqa_work_order');
	order.initialize();
	order.assocaited_work_request_number=items.assocaited_work_request_number;
	//order.associated_work_request_item_number=items.sys_id;
	order.associated_work_request_item_number=requests;
	order.insert();

 

1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron

@MaharshiC 

what type of UI action it is? Related list?

Share screenshots.

try this updated script

var requests = '';
var items = new GlideRecord('x_iem_tqa_work_request_items');
items.addEncodedQuery('selected_work_items=true^associated_work_order_numberISEMPTY');
items.query();

var parent = null;
var state = null;
var isValid = true;

while (items.next()) {
    if (parent === null && state === null) {
        parent = items.parent;
        state = items.state;
    } else if (items.parent != parent || items.state != state) {
        isValid = false;
        break;
    }
    requests = requests + ',' + items.sys_id;
}

if (isValid) {
    var order = new GlideRecord('x_iem_tqa_work_order');
    order.initialize();
    order.assocaited_work_request_number = items.assocaited_work_request_number;
    order.associated_work_request_item_number = requests;
    order.insert();
} else {
    gs.addErrorMessage('Selected work request items have different parent or state. Process stopped.');
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

1 REPLY 1

Ankur Bawiskar
Tera Patron

@MaharshiC 

what type of UI action it is? Related list?

Share screenshots.

try this updated script

var requests = '';
var items = new GlideRecord('x_iem_tqa_work_request_items');
items.addEncodedQuery('selected_work_items=true^associated_work_order_numberISEMPTY');
items.query();

var parent = null;
var state = null;
var isValid = true;

while (items.next()) {
    if (parent === null && state === null) {
        parent = items.parent;
        state = items.state;
    } else if (items.parent != parent || items.state != state) {
        isValid = false;
        break;
    }
    requests = requests + ',' + items.sys_id;
}

if (isValid) {
    var order = new GlideRecord('x_iem_tqa_work_order');
    order.initialize();
    order.assocaited_work_request_number = items.assocaited_work_request_number;
    order.associated_work_request_item_number = requests;
    order.insert();
} else {
    gs.addErrorMessage('Selected work request items have different parent or state. Process stopped.');
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader