Use PDIs? Take our 5-minute survey to help shape the PDI roadmap.

Error when fetching data on server using a function

Leejcharlto
Tera Contributor

Im getting this error: "ErrorConditon 'Condition: current.problem_id.changes() || current.operation() == 'delete'' in business rule 'Update Problem Incident Count' on incident: INC0008111 evaluated to null; skipping business rule" when i wrap the fetch in a function in the server script. It doesnt happen on the original fetch but only when I call  the server script to update the db. If i just let the script run down to the fetch without wrapping it in a function I dont have this issue.


Heres my server code:

(function() {
  var gr = new GlideRecordSecure('incident');
    var updateSuccessful = false;

    if (input && input.action == "saveUpdate" && input.recordSysId) {
        if (gr.get(input.recordSysId)) {
            var records = input.records;
            for (var i = 0; i < records.length; i++) {
                var record = records[i];
                if (record.recordId == input.recordSysId) {
                    gr.setValue('short_description', record.shortDescription);
                    updateSuccessful = gr.update() != null;
                    break;
                }
            }
        }
        data.updateSuccessful = updateSuccessful
        data.action = null
        data.recordSysId = null
        return
    }

  function fetchData() {
        data.records = [];
        gr.addEncodedQuery('caller_idDYNAMIC90d1921e5f510100a9ad2572f2b477fe');
        gr.query();
        while(gr.next()) {
            data.records.push({
                recordId: gr.getValue("sys_id"),
                number: gr.getValue("number"), 
                shortDescription: gr.getValue("short_description"),
                priority: gr.getValue("priority"),
                updated: gr.getValue("sys_updated_on")
            });
        }
    }
    fetchData()
})();

 

8 REPLIES 8

Vishnu Surendra
Tera Expert

Hi @Leejcharlto 
Please try creating a new GlideRecordSecure object for the Incident table inside the if condition instead of using the object created during page load

Is that standard procedure?  Should GlideRecordSecure never be created once at the top of the function and only ever locally where needed? Thanks for the reply!

When the page loads, the server script executes and gr is created.

Later, when the client calls the server script with parameters, the server script executes again as a new request. The previous gr object from the page-load execution is not retained.

I understand that. I just didnt think there would be an issue creating the glideRecord at the start of the script instead of creating it everywhere its needed.