Как отфильтровать запрос GlideRecord для задач по полю запроса на изменение - PullRequest
0 голосов
/ 04 января 2019

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

    var changes = new GlideRecord('task_ci');
    changes.addQuery('task.sys_class_name', 'change_request');
    changes.addQuery('task.approval','approved');
    changes.addQuery('ci_item', 'IN', items.join(','));
    changes.addQuery('task.active', true);
    changes.addQuery('task.start_date','<=', gs.nowDateTime());
    changes.addQuery('task.end_date','>=', gs.nowDateTime());
    changes.query();

Код работает нормально, за исключением начальной и конечной даты.Это в значительной степени игнорирует их.Я предполагаю, что, поскольку start_date и end_date фактически находятся в форме запроса на изменение (которая выходит из задачи), они не доступны таким образом.Есть ли способ использовать эти поля в моем запросе?

1 Ответ

0 голосов
/ 04 января 2019

Изменение start_date и end_date напрямую недоступно в таблице task_ci.Вам нужно пройтись по таблице запросов на изменение и получить ее.Чтобы получить фактический запрос, вы можете применить фильтр фильтр к таблице и скопировать его запрос.

Запрос:

  task.ref_change_request.start_date<=javascript:gs.nowDateTime()^task.ref_change_request.end_date>=javascript:gs.nowDateTime()

Фильтр

Запрос был изменен в соответствии с вашими критериями Сейчас (текущая дата / время) и применен к сценарию какниже.

    var changes = new GlideRecord('task_ci');
    changes.addQuery('task.sys_class_name', 'change_request');
    changes.addQuery('task.approval','approved');
    changes.addQuery('ci_item', 'IN', items.join(','));
    changes.addQuery('task.active', true);
    changes.addEncodedQuery('task.ref_change_request.start_date<=javascript:gs.nowDateTime()^task.ref_change_request.end_date>=javascript:gs.nowDateTime()');
    changes.query();

Вот версия сценария addQuery ()

    var changes = new GlideRecord('task_ci');
    changes.addQuery('task.sys_class_name', 'change_request');
    changes.addQuery('task.approval','approved');
    changes.addQuery('task.active', true);
    changes.addQuery('task.ref_change_request.start_date', '<=', 'javascript:gs.nowDateTime()');
    changes.addQuery('task.ref_change_request.end_date', '>=', 'javascript:gs.nowDateTime()');
    changes.query();
...