Поля не заполняются в форме каталога - PullRequest
0 голосов
/ 15 октября 2019

поля не заполняются, т. Е. «Сервер базы данных» и «экземпляр БД». Здесь мы не можем просто использовать ссылочный фильтр, нам нужно заполнить эти два поля через скрипт. Но скрипт не работает. Данные должны заполняться из таблицы cmdb_rel_ci.

Условие фильтра для таблицы cmdb_rel_ci должно быть

Код:

    function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    g_form.clearOptions('db_instance');
    g_form.addOption('db_instance','','--None--',0);

    var server = g_form.getValue('db_server');
    alert(server);
    //  var server_name='';
    //  var rec1 = new GlideRecord('cmdb_ci');
    //                  rec1.addQuery('sys_id', server);
    //                  rec1.query();
    //                      if (rec1.next()){

        //                      server_name = rec1.name;

        //                  }

        var ga = new GlideAjax('getDBInstanceForServers');
        ga.addParam('sysparm_name','getRunningDBInstances');
        ga.addParam('sysparm_server', server);
        ga.getXML(instancesOfServer);
            // ga.getXMLWait();
        //ga.getXMLAnswer(function(answer) {
            //var result = JSON.parse(answer);
            //alert('result');

            function instancesOfServer(response) {
                var answer = response.responseXML.documentElement.getAttribute("answer");
                //var answer = ga.getAnswer();
                answer = answer.evalJSON(); 
            //}
                //var returneddata = answer.evalJSON();
                //alert(result.instance_name);
                var name = returneddata.instance_name.split('\n');
                for(var count=1;count<name.length;count++){
                    //alert(name[count]);
                    g_form.addOption('db_instance',name[count],name[count],count);
                }
        //  });
        }

}
*******************************************
script include code:

    var getDBInstanceForServers = Class.create();
getDBInstanceForServers.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getRunningDBInstances: function() {
        var server = this.getParameter('sysparm_server');
        var instances = '';

        var obj = {};
        gs.log(server, 'Vijaya');
            var rec = new GlideRecord('cmdb_rel_ci');
            rec.addQuery('child', server);
            rec.addQuery('type', '60bc4e22c0a8010e01f074cbe6bd73c3');
            rec.query();
            gs.log(rec.getRowCount(), 'Vijaya');
            while (rec.next()) {
                var sys_id = rec.parent;
                if(sys_id!=""){
                    var rec1 = new GlideRecord('cmdb_ci_db_instance');
                    rec1.addQuery('sys_id', sys_id);
                    rec1.query();
                    while (rec1.next()){
                        if(rec1.name!='')
                            gs.log(rec1.name, 'Vijaya');
                        //instances += '\n' + rec1.name.toString();
                        instances = rec1.name.toString();
                        gs.log(instances, 'Vijaya');
                    }

                    //gs.log(instances, 'Vijaya');
                }
            }

            //obj.instance_name = instances.toString();

            //var json = new JSON();
            //var data = JSON.stringify(obj);

            return instances;

        },
        getqualifier: function() {
            var server = this.getParameter('sysparm_server');
            var instances = '';
            var filterString='parentISNOTEMPTY^ORparent!=^childISNOTEMPTY^child.u_prod_status=Production^child.support_groupISNOTEMPTY^child.support_group!=71d83db50f889a0060e7e64be1050e3b'.toString();
            var refQual='';
            var childName ='';

            var rec = new GlideRecord('cmdb_ci');
            rec.addQuery('sys_id', server);
            rec.query();

            if (rec.next()) {
                childName = rec.name.toString();
                refQual = filterString+'^'+'child.nameCONTAINS'+childName+'^EQ';


            }
            else{
                refQual =filterString+'^EQ';
            }
            refQual =  refQual.toString();

            return refQual;

        },
    });

Пожалуйста, помогите с кодом.

...