В общем игнорирует фильтр, есть ли другие способы, или как можно переделать данный?
public static function sections()
{
$data = [];
$method = 'crm.productsection.list';
$b24_result = self::callFull(
$method,
$data,
);
var_dump($b24_result);
die;
return $b24_result;
}
private static function callFull($method, $data) // работает для юзеров, не работает для департаментов, разделов
{
$res = [];
$lastId = 0;
$finish = false;
$data['order']['ID'] = 'ASC';
$data['start'] = -1;
$i = 0;
while (!$finish && $i <= 2) {
var_dump($lastId);
$i++;
$data['filter'][">ID"] = $lastId;
$result = CRest::call(
$method,
$data
);
if (count($result['result']) > 0) {
$lastId = end($result['result'])['ID'];
$res = array_merge($res, $result['result']);
} else {
$finish = true;
}
usleep(200000);
}
return $res;
}
ps Решил вопрос через параметр 'start' (работает в качестве NAV_PARAMS)
private static function callFull($method, $data) // работает для юзеров, не работает для департаментов, разделов
{
$res = [];
$finish = false;
$pages = 0;
$data['order']['ID'] = 'ASC';
//$data['start'] = -1;
$i = 0;
$n = 0;
while (!$finish && $i <= 2) {
if ($i == 0) {
$result = CRest::call(
$method,
$data
);
unset($data);
$pages = ceil($result['total'] / 50);
$res[] = $result['result'];
} else {
$data[$i] = [
'method' => $method,
'params' => [
'order' => [
'ID' => 'ASC'
],
'start' => $i * 50
],
];
if ($n == 50) {
$res = array_merge($res, CRest::callBatch($data, 50)['result']['result']);
unset($data);
$n = 0;
}
}
$i++;
if ($i <= $pages) {
} else {
$finish = true;
}
usleep(200000);
}
$res = array_merge($res, CRest::callBatch($data, 50)['result']['result']);
$result = [];
foreach ($res as $val) {
$result = array_merge($result, $val);
}
return $res;
}