Client script help with integer field

booher04
Tera Guru

I have a client script setup to pull in data to 2 fields(integer, reference) from 1 field(reference field).  The reference field data is working correctly, however I cannot get the integer field to populate correctly.  I've gotten it to display the sys_id but I can't get the correct value of the field to display automatically.

I have an OnChange client script as follows:

onChane of application_name field.

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}

var appName = g_form.getReference('application_name', setInfo);

function setInfo(appName){
g_form.setValue('it_owner',appName.managed_by);

g_form.setValue('app_code',appName.u_app_list);

}
}

 

application_name is a reference to table cmdb_ci_service.  The managed_by is a reference field(it's working how it should) which populates to the it_owner reference field and the u_app_list is an integer on the table cmdb_ci_business_app which is not populating to the app_code field in the catalog item.  I've tried setting the app_code field to a reference variable, look up select box, single line text.. none have worked.  

1 ACCEPTED SOLUTION

try below

var appHelper = Class.create();
appHelper.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getAppData: function() {
        var id = this.getParameter('sysparm_appname');
        var gr = new GlideRecord('cmdb_ci_service');
        if (gr.get(id)) {
            var obj = {};
            obj.managed_by = gr.managed_by.toString();
            obj.u_app_id = gr.u_application_catalog_entry.u_app_id.getDisplayValue();
            return JSON.stringify(obj);
        }
    },

    type: 'appHelper'
});
function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    var ajax = new GlideAjax('appHelper');
    ajax.addParam('sysparm_name', 'getAppData');
    ajax.addParam('sysparm_appname', g_form.getValue('application_name'));
    ajax.getXMLAnswer(function(answer) {
        var answerObj = JSON.parse(answer);
        g_form.setValue('it_owner', answerObj.managed_by);
        g_form.setValue('app_code', answerObj.u_app_id.toString());
    });
}

View solution in original post

12 REPLIES 12

This pulled in the App ID but a different value then expected and the managed by is not working now....however I think I found part of the issue:  They are both on the form/table for cmbd_ci_business but here is the kicker:

u_app_id is:

find_real_file.png

 

managed_by is:

find_real_file.png

try below

var appHelper = Class.create();
appHelper.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getAppData: function() {
        var id = this.getParameter('sysparm_appname');
        var gr = new GlideRecord('cmdb_ci_service');
        if (gr.get(id)) {
            var obj = {};
            obj.managed_by = gr.managed_by.toString();
            obj.u_app_id = gr.u_application_catalog_entry.u_app_id.getDisplayValue();
            return JSON.stringify(obj);
        }
    },

    type: 'appHelper'
});
function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    var ajax = new GlideAjax('appHelper');
    ajax.addParam('sysparm_name', 'getAppData');
    ajax.addParam('sysparm_appname', g_form.getValue('application_name'));
    ajax.getXMLAnswer(function(answer) {
        var answerObj = JSON.parse(answer);
        g_form.setValue('it_owner', answerObj.managed_by);
        g_form.setValue('app_code', answerObj.u_app_id.toString());
    });
}

Awesome!  That worked!  Thank you all for your help!