Skip to main content

Service Catalog: get display value of reference catalog variable

alert(g_form.getDisplayBox('<variable_name>').value);

note: this doesn't work in Service Portal, and not sure if it's officially supported since it doesn't appear in the GlideForm documentation!

for serviceportal, some experimentation below...

---

was having a play with GlideRecord in Service Portal view...


function onSubmit() {
    var urlString=top.location.toString();
    var res=true;
    var bPortal=false; //--loaded from Service Portal?
    if(urlString.indexOf('id=sc_cat_item')>-1){
        bPortal=true;
    }
    var itemID='';
    try{
        if (bPortal){
            itemID= g_form.getSysId(); //--service portal friendly
        }else{
            //--standard servicenow form
            itemID= gel('sysparm_id').value;
        }
    }catch (ex){
        //--
        alert('An error has occurred in the form load ' + ex.toString());
    }
   
    if (g_form.getValue('retail_owned_by')=='' || g_form.getValue('retail_assigned_to')==''){
        alert('owned by / assigned to not populated for the item selected');
        return false;
       
    }else{
        var bLaptop=false;
       
        alert(itemID);
        var displayTxt='';
        if (!bPortal){
        displayTxt=g_form.getDisplayBox('retail_kit').value.toLowerCase();
            bLaptop=(displayTxt.indexOf('lenovo')>-1);
            if (bLaptop){
                res=confirm('proceed?');
            }
            alert('return...' + res);
            return res;
           
        }else{
           
            //--SERVICE PORTAL LOGIC:
           
            var field_sysid=g_form.getValue('retail_kit');
            //--service portal view
            //--reluctantly, a gliderecord. Cant use synchronous AJAX calls and need to be able to prevent form submission
            //--https://docs.servicenow.com/bundle/istanbul-servicenow-platform/page/build/service-portal/concept/unsupported_client_scripts.html
            var grRL=new GlideRecord('u_mab_retail_sc_lookup');
            grRL.addQuery('sys_id', field_sysid);
            /*grRL.query();
            if (grRL.next()){
                alert('getKitDisplay:: test gl');
                //alert('getKitDisplay:: u_name:' + grRL.getValue('u_name'));
                //alert('getKitDisplay:: sys_id:' + grRL.getValue('sys_id'));
                //alert('getKitDisplay:: getTableName: ' + grRL.getTableName());
                //displayTxt=grRL.getValue(u_name);
            }*/
            grRL.query(function(grRL) {
                if (grRL.next()){
                    alert('in func');
                    alert('getKitDisplay:: u_name:' + grRL.getValue('u_name'));
                    displayTxt=    grRL.getValue('u_name').toLowerCase();
                    bLaptop=(displayTxt.indexOf('lenovo')>-1);
                   
                    if (bLaptop){
                        res=confirm('proceed?');
                    }
                    alert('return...' + res);
                    return res;
                }
            });
           
        }
        /*alert('test---' + displayTxt);
        alert(bLaptop);
       
        if (itemID=='4c08fea3379d97803bef532e53990e03'){ //--additional equipment
            if (g_form.getValue('retail_additional_flag')=='true'){
                alert(g_form.getValue('hidden_addtl_sections'));
            totalCounter=parseInt(g_form.getValue('hidden_addtl_sections'));
                for (iC=1;iC<totalCounter;iC++){
                    //alert(iC);
                }
            }
        }*/
       
       
       
       
        //return true;
    }
   
}





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            },

Get URL Parameter - server side script (portal or classic UI)

Classic UI : var sURL_editparam = gs . action . getGlideURI (). getMap (). get ( ' sysparm_aparameter ' ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); } Portal : var sURL_editparam = $sp . getParameter ( " sysparm_aparameter " ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); }