console.log(`assignedId: ${assignedId}, stateInput: ${stateInput}`);
assignedId = assignedId.substring(5); // убираем "user_"
let state;
let result = [];
let lastChunk = null;
if (stateInput === "") {
state = { // initial state
lastSeenId: 0
};
} else {
const inputObject = JSON.parse(stateInput);
state = {
lastSeenId: inputObject.lastSeenId
}
}
function doIteration() {
const filter = {'>ID': state.lastSeenId};
filter['=ASSIGNED_BY_ID'] = assignedId;
lastChunk = bx24.callMethod('crm.contact.list', {
start: -1,
order: {'ID': 'ASC'},
select: [ "ID" ],
filter: filter
});
if (lastChunk.length > 0) {
result.push(...lastChunk.map((entity) => parseInt(entity.ID)));
state.lastSeenId = lastChunk[lastChunk.length - 1].ID;
}
return lastChunk.length < 50;
}
let isFinished;
while (!(isFinished = doIteration())) {
if (stopWatch.getRemainingMillis() <= 0) {
console.log("Достигли ограничения времени запуска");
break;
}
console.log("Получили часть элементов: " + lastChunk.length + ", продолжаем");
}
if (isFinished) {
console.log("Выгрузка данных полностью завершена, получено элементов в этой итерации: " + result.length);
} else {
console.log("Выгрузка данных завершена частично, получено элементов в этой итерации: " + result.length);
}
return {
"stateOutput": JSON.stringify(state),
"isFinished": isFinished,
"contactIds": result
};