Skip to main content

Pull in a list of sys ids into a report (reference a script include)

Report:



sys id filter:

javascript:new refqual_functions().report_sysidlist('auth_request');


script include code, note: the client callable box must be ticked (note, the script include contains some bonus code for refreshing group membership of a group to contain open approvals used for chasing up approvals via a scheduled email of the report)


var refqual_functions = Class.create();
refqual_functions.prototype = {
    initialize: function() {
        //gs.log('test initialise--', 'refqual_functions');
       
       
    },
   
    report_sysidlist: function(filterToApply){
        //--build up list of sysids to return to a report condition field filter by sysid
        gs.log('test--', 'refqual_functions');
       
        var ids = [];
        if (filterToApply=='auth_request'){
            //--build up a list of sysids to return to ' Auth Process  Outstanding Approvals' report,
            var grApprovals=new GlideRecord('sysapproval_approver');
            grApprovals.addQuery('state','requested');
            grApprovals.query();
            while(grApprovals.next()){
                var grReqItem=new GlideRecord('sc_req_item');
                grReqItem.addQuery('sys_id', grApprovals.sysapproval);
            grReqItem.addQuery('order_guide','7d292af7371c57008ca1138943990e7d'); //--auth req order guide
                grReqItem.query();
                if (grReqItem.next()){
                    ids.push(grApprovals.sys_id.toString());
                }
            }
        }
        return ids;
    },
   
    refresh_groupMemberShip_authprocess: function(){
        //--called from sch job 'refresh group  Auth Requests Open Approvals'
        //--group membership to refresh a group membership list
        var grGroupMem_old=new GlideRecord('sys_user_grmember');
        grGroupMem_old.addQuery('group', 'e6cda34137cdd7403bef532e53990e91');//--" Auth Requests Open Approvals"
        //grGroupMem_old.query();
        //gs.print(grGroupMem_old.getRowCount());
        grGroupMem_old.deleteMultiple();
       
        var grApprovals=new GlideRecord('sysapproval_approver');
        grApprovals.addQuery('state','requested');
        grApprovals.query();
        while(grApprovals.next()){
            var grReqItem=new GlideRecord('sc_req_item');
            grReqItem.addQuery('sys_id', grApprovals.sysapproval);
        grReqItem.addQuery('order_guide','7d292af7371c57008ca1138943990e7d'); //--auth req order guide
            grReqItem.query();
            if (grReqItem.next()){
                if (this._checkAlreadyGroupMember('e6cda34137cdd7403bef532e53990e91', grApprovals.approver)==0){
                   
                    var grGroupMem=new GlideRecord('sys_user_grmember');
                    grGroupMem.newRecord();
                    grGroupMem.group='e6cda34137cdd7403bef532e53990e91';//--" Auth Requests Open Approvals"
                    grGroupMem.user=grApprovals.approver;
                    grGroupMem.insert();
                }
            }
        }
    },
   
    _checkAlreadyGroupMember: function(groupSYSID, userSYSID){
        var grGroupMem=new GlideRecord('sys_user_grmember');
        grGroupMem.addQuery('group', groupSYSID);
        grGroupMem.addQuery('user', userSYSID);
        grGroupMem.query();
        return (grGroupMem.getRowCount());
        //--returns zero if not a member
    },
   
    type: 'refqual_functions'
};

Comments

Popular posts from this blog

ServiceNow check for null or nil or empty (or not)

Haven't tested these all recently within global/local scopes, so feel free to have a play! option 1 use an encoded query embedded in the GlideRecord , e.g.  var grProf = new GlideRecord ( 'x_cls_clear_skye_i_profile' ); grProf . addQuery ( 'status=1^ owner=NULL ' ); grProf . query (); even better use the glideRecord  addNotNullQuery or addNullQuery option 2 JSUtil.nil / notNil (this might be the most powerful. See this link ) example: if ( current . operation () == 'insert' && JSUtil . notNil ( current . parent ) && ! current . work_effort . nil ())  option 3 there might be times when you need to get inside the GlideRecord and perform the check there, for example if the code goes down 2 optional routes depending on null / not null can use gs.nil : var grAppr = new GlideRecord ( 'sysapproval_approver' ); var grUser = new GlideRecord ( 'sys_user' ); if ( grUser . get ( 'sys_id' , current . approver )){

Service Catalog: variable advanced reference qualifiers

Call a script include to apply a reference qualifier on a catalog item variable: - variable reference qualifier dependent on another variable selection, in this case a variable referencing sys_user (requested_for) On the catalog item form. variable name to apply ref qual filter : retail_equipment variable reference qualifier (on cmdb table ): javascript : new  refqual_functions (). lostStolen_getAssignedCIs (); client-callable script include ( refqual_functions)  function : lostStolen_getAssignedCIs : function (){         //--called from variable set client script, for lost/stolen request (service catalog)     gs . log ( current . variables . requested_for , 'retail_lostStolen_getAssignedCIs' );         return ( 'install_statusNOT IN8,7^owned_by=' + current . variables . requested_for );             //owned_by=1269b79937f1060041c5616043990e41^install_statusNOT IN8,7            },