console.log("assignedId: '" + assignedId + "', companyId: '" + companyId
+ "', contactId: '" + contactId + "', stateInput: '" + stateInput + "'");
let state;
let result = [];
let lastChunk = null;
if (stateInput === "") {
state = { // initial state
lastSeenId: 0
};
} else {
state = JSON.parse(stateInput);
}
function doIteration() {
const filter = {'>ID': state.lastSeenId};
if (!!assignedId) {
filter['=ASSIGNED_BY_ID'] = assignedId;
}
if (!!companyId) {
filter['=COMPANY_ID'] = companyId;
}
if (!!contactId) {
filter['=CONTACT_ID'] = contactId;
}
lastChunk = bx24.callMethod('crm.deal.list', {
start: -1,
order: {'ID': 'ASC'},
select: [ "ID" ],
filter: filter
});
if (lastChunk.length > 0) {
result.push(...lastChunk.map((deal) => parseInt(deal.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,
"result": result
};