Как указать в запросе, что этот индекс должен изменяться просто динамически?
Такой возможности в Битрикс24 нет.
Дело кроется в несколько ином видении проблематики. Когда вы выполняете запрос на получения количества он возвращает вам не более 50 элементов с постраничной, но батч это всего 50 запросов, то есть если бы такой механизм имел место, то батч был бы резиновым, так как по факту должен выполнить 51 запрос (1 на получение списка и еще 50 на получение каждого элемента). Каким образом должен был бы себя вести батч-запрос когда вы указали 3 запроса? Например получение списка сделок, получение конкретных сделок и получение какого-нибудь справочника? Выполнить 52 запроса? Нет, это фантастика.
Какой хак можно использовать?
Можно самому генерировать запросы на основании хака.
Так как в батче результат запроса выдается порядковым номером (если не указано иное), то они всегда будут в диапазоне от 0 до 49.
Для примера мы хотим получить 10 сделок из постранички одним запросом, тогда можно отправить следующий батч-запрос:
'halt' => 0,
'cmd' => [
'deals' => 'crm.deal.list?filter[STAGE_ID]=PREPAYMENT_INVOICE&filter[>ID]=0&limit=10',
'products_0' => 'crm.deal.productrows.get?id=$result[deals][0][ID]',
'products_1' => 'crm.deal.productrows.get?id=$result[deals][1][ID]',
...
'products_8' => 'crm.deal.productrows.get?id=$result[deals][8][ID]',
'products_9' => 'crm.deal.productrows.get?id=$result[deals][9][ID]',
]
Когда мы проитерируем "products_*", мы получим последний обработанный ID (для примера это будет 123456) и сможем выполнить следующий батч-запрос:
'halt' => 0,
'cmd' => [
'deals' => 'crm.deal.list?filter[STAGE_ID]=PREPAYMENT_INVOICE&filter[>ID]=123456&limit=10',
'products_0' => 'crm.deal.productrows.get?id=$result[deals][0][ID]',
'products_1' => 'crm.deal.productrows.get?id=$result[deals][1][ID]',
...
'products_8' => 'crm.deal.productrows.get?id=$result[deals][8][ID]',
'products_9' => 'crm.deal.productrows.get?id=$result[deals][9][ID]',
]
Но вы в любом случае должны понимать что чем больше данных будет возвращать ваш батч-запрос тем он мендленнее будет выполняться, поэтому в crm.deal.list рекомендую так же ограничить список получаемых полей.