Произошел неожиданный сбой при этой оценке, предоставлен недопустимый тип

#servicenow

#servicenow

Вопрос:

Я пытаюсь запустить следующий код, который в значительной степени скопирован из действия пользовательского интерфейса OoTheBox под названием «Просмотр ответа пользователя».

 function showRiskAssessment(){
    var ra = new GlideRecord('asmt_assessment_instance');
    ra.addQuery('task_id', '=', current.sys_id);
    ra.orderByDesc('taken_on');
    ra.setLimit(1);
    ra.query();
    
    // var id = g_form.getUniqueValue();
    var id = ra.sys_id;
    //var type = g_form.getValue('metric_type');
    var type = '468aeff2db9357008aeba9f7059619ca';
    var url = 'assessment_take2.do?sysparm_assessable_sysid='   id   'amp;sysparm_assessable_type='   type   'amp;sysparm_reader_view=true';

    var d = new GlideOverlay({
        title: "User's Response",
        iframe: url,
        width:'80%',
        height: '100%',
        onAfterLoad: function() {
            var iframe = d.getIFrameElement();
            setTimeout(function(){
                iframe.height = parseInt(iframe.height) 1;
            },0);
        }
    });
    d.render();
}
  

Если я жестко закодирую это так, это сработает. Все, что я пытаюсь сделать, это в записи изменения я хочу найти самый последний экземпляр оценки для этого конкретного изменения и отобразить в оверлее. Очевидно, что я не могу жестко закодировать id однако, похоже, запрос вообще не распознает эту информацию.

 function showRiskAssessment(){
    // var ra = new GlideRecord('asmt_assessment_instance');
    // ra.addQuery('task_id', '=', current.sys_id);
    // ra.orderByDesc('taken_on');
    // ra.setLimit(1);
    // ra.query();
    
    // var id = g_form.getUniqueValue();
    var id = '5c516eeddb87d090ebce60ab1396198a';
    //var type = g_form.getValue('metric_type');
    var type = '468aeff2db9357008aeba9f7059619ca';
    var url = 'assessment_take2.do?sysparm_assessable_sysid='   id   'amp;sysparm_assessable_type='   type   'amp;sysparm_reader_view=true';

    var d = new GlideOverlay({
        title: "User's Response",
        iframe: url,
        width:'80%',
        height: '100%',
        onAfterLoad: function() {
            var iframe = d.getIFrameElement();
            setTimeout(function(){
                iframe.height = parseInt(iframe.height) 1;
            },0);
        }
    });
    d.render();
}
  

Ответ №1:

Вы пытаетесь использовать current.sys_id в сценарии на стороне клиента. Рекомендуется использовать g_form для сценариев на стороне клиента. Вы также пытаетесь выполнить GlideRecord в клиентском скрипте, что также не рекомендуется.

Чтобы исправить, замените:

 ra.addQuery('task_id', '=', current.sys_id);
  

с:

 var sysId = g_form.getUniqueValue();
ra.addQuery('task_id', '=', sysId);
  

Кроме того, для определения разницы между g_form и current посмотрите здесь.