i have a problem, I am trying to take the value of a field of the users table that I populated in the first while, but when I try to take the value in the second while of the second call, it returns 0, I cannot understand why, the values in the field are populated.
my code below:
var r = new sn_ws.RESTMessageV2('success_factors_api', 'GET');
var response = r.execute();
var reviver = function(key, value) {
if (typeof value === 'undefined') {
return null;
}
};
var responseBody = JSON.parse(response.getBody(), reviver());
var httpStatus = response.getStatusCode();
//gs.info(responseBody.d.results[0].nationalId);
var gr = new GlideRecord('sys_user');
gr.addEncodedQuery('u_codice_fiscaleISNOTEMPTY');
gr.query();
while (gr.next()) {
var fiscalCode = gr.getValue('u_codice_fiscale');
responseBody.d.results.forEach(function(obj) {
if (fiscalCode === obj.nationalId) {
gr.u_personal_id_external_successfactor = obj.personIdExternal;
gr.update();
}
});
}
var r2 = new sn_ws.RESTMessageV2('success_factors_api', 'GETEMPLOYMENT');
var response2 = r2.execute();
var reviver2 = function(key, value) {
if (typeof value === 'undefined') {
return null;
}
};
var responseBody2 = JSON.parse(response2.getBody(), reviver2());
var httpStatus2 = response2.getStatusCode();
gr.addEncodedQuery('u_personal_id_external_successfactorISNOTEMPTY');
while (gr.next()) {
var personalIdExternal = gr.getValue('u_personal_id_external_successfactor');
gs.info(personalIdExternal); //return me 0
responseBody2.d.results.forEach(function(obj) {
if (personalIdExternal === obj.personIdExternal) {
gr.u_user_id_successfactor = obj.userId;
gr.update();
}
});
}
Your second loop is missing a gr.query()
. Also, you should never reuse a GlideRecord
like that. Declare a new GlideRecord
for the second loop.