Lev Berger
07/28/2022, 11:57 AMlet logSearchObj = search.create({
type: "xxx_log",
filters: [],
columns:
[
search.createColumn({name: "", label: ""}),
search.createColumn({name: "", label: ""}),
search.createColumn({name: "", label: ""}),
search.createColumn({name: "", label: ""})]
});
logSearchObj.run().each(function(result){
for(let i=0; i<result.columns.length;i++){
let val = result.getValue({
name: result.columns[i].name
});
scriptDeployment.insertLine({
sublistId: id,
line: i,
});
scriptDeployment.setCurrentSublistValue({
sublistId: id,
fieldId: recSublistIdsArr[i],
value: val
});
scriptDeployment.commitLine({
sublistId: 'id'
});
}
battk
07/28/2022, 12:00 PMbattk
07/28/2022, 12:01 PMLev Berger
07/28/2022, 12:04 PMbattk
07/28/2022, 12:06 PMLev Berger
07/28/2022, 12:07 PMbattk
07/28/2022, 12:07 PMLev Berger
07/28/2022, 12:11 PMbattk
07/28/2022, 12:13 PMbattk
07/28/2022, 12:13 PMbattk
07/28/2022, 12:14 PMLev Berger
07/28/2022, 12:19 PMbattk
07/28/2022, 12:20 PMLev Berger
07/28/2022, 12:23 PMbattk
07/28/2022, 12:31 PMbattk
07/28/2022, 12:31 PMbattk
07/28/2022, 12:32 PMbattk
07/28/2022, 12:33 PMLev Berger
07/28/2022, 12:35 PMbattk
07/28/2022, 12:38 PMLev Berger
07/28/2022, 12:39 PMLev Berger
08/09/2022, 6:44 AMfor (let c = 0; segment_rules_logSearchObj.columns.length && c < segment_rules_logSearchObj.columns.length; c++) {
recSublistIdsArr.push(segment_rules_logSearchObj.columns[c].name);
}
let logSearchObjLength = segment_rules_logSearchObj.runPaged().count;
for (let j = 0; j < logSearchObjLength; j++) {
// logde("searchLogData.push(val)", searchLogData)
if (!isNullOrEmpty(searchLogData)) {
sublistLoadValues = searchLogData.splice((searchLogData.length - recSublistIdsArr.length), recSublistIdsArr.length)
//logde("sublistLoadValues", sublistLoadValues)
}
for (let i = 0; i < recSublistIdsArr.length; i++) {
try {
sublist.setSublistValue({
id: recSublistIdsArr[i],
line: j,
value: sublistLoadValues[i]
})
} catch (e) {
logde("setSublistValue", e)
}
}
}
than I created an 2 arrays to hold records objects, 1 from saved Search holding submitted data => old record and one from params with current record
const searchResult = segment_rules_logSearchObj.run()
for (let c = 0; segment_rules_logSearchObj.columns.length && c < segment_rules_logSearchObj.columns.length; c++) {
recSublistIdsArr.push(segment_rules_logSearchObj.columns[c].name);
}
searchResult.each(function (result) {
let tempResultLoadObj = {}
for (let i = 0; i < result.columns.length; i++) {
let val = result.getValue({
name: result.columns[i].name
});
tempResultLoadObj[result.columns[i].name] = val
}
oldRecObjArr.push({"id": tempResultLoadObj.internalid, "values": tempResultLoadObj})
return true;
});
/**
* Create array of new record Objects from POST params
*/
function zip(keys, values) {
return Object.fromEntries(
keys.map((key, index) => [key, values[index]])
);
}
try {
for (let i = 0; i < newDataRawsArr.length; i++) {
newRecordObjArr.push({
"id": zip(recSublistIdsArr, newDataRawsArr[i]).internalid,
"values": zip(recSublistIdsArr, newDataRawsArr[i])
})
}
} catch (e) {
logde("Developer expected Error: read details", `inserting new record object to the array has no internal id ${e}`)
newRecordObjArr.push({"id": "InsertedRecord", "values": zip(recSublistIdsArr, newDataRawsArr[i])})
}
After this it was an easy flight forward CRUD...
if (JSON.stringify(newRecordObjArr) !== JSON.stringify(oldRecObjArr)) {
insertRecord (newRecordObjArr)
deletedRecord (newRecordObjArr,oldRecObjArr)
updatedRecord(newRecordObjArr, oldRecObjArr)
}