You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调用crm.lead.list方法获取下组线索?PHP分页拉取超50条数据

问题根因

  • 核心错误是变量名拼写失误:第一次调用的返回值存入了$fistSet(缺了字母r),后续读取分页偏移量next时用的是未定义的$firstSet变量,导致$next实际为空值,第二次调用传入的OFFSET参数值为0,和第一次请求偏移量一致,因此返回的数据集完全相同。
  • 次要可优化点:请求参数格式可以更规范,避免参数层级错误。

修正后可运行代码

单次二次拉取修正版

// 第一次请求 变量名修正为firstSet
$firstSet = CRest::call("crm.lead.list", [
    "order"=> [ "ID"=> "ASC" ],
    "filter"=> [ "UF_CRM_1600929716160"=> 632],
    "select"=> [ "ID", "TITLE", "STATUS_ID", "OPPORTUNITY", "CURRENCY_ID" ]
]);
echo "<pre>";
var_dump($firstSet);
echo "</pre>";
echo "<br>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>";

$total = $firstSet["total"];
$next = $firstSet["next"] ?? 0; // 加判空避免不存在时报错
// 第二次请求 偏移量参数位置对齐,更易读
$secondSet = CRest::call("crm.lead.list", [
    "order"=> [ "ID"=> "ASC" ],
    "filter"=> [ "UF_CRM_1600929716160"=> 632],
    "OFFSET"=> $next,
    "select"=> [ "ID", "TITLE", "STATUS_ID", "OPPORTUNITY", "CURRENCY_ID" ]
]);
echo "<pre>";
var_dump($secondSet);
echo "</pre>";

全量批量拉取通用版

如果需要一次性拉取所有符合条件的线索,可以用循环批量拉取:

$allLeads = [];
$offset = 0;
do {
    $result = CRest::call("crm.lead.list", [
        "order"=> [ "ID"=> "ASC" ],
        "filter"=> [ "UF_CRM_1600929716160"=> 632],
        "select"=> [ "ID", "TITLE", "STATUS_ID", "OPPORTUNITY", "CURRENCY_ID" ],
        "OFFSET" => $offset
    ]);
    // 合并当前页数据
    if (isset($result['result'])) {
        $allLeads = array_merge($allLeads, $result['result']);
    }
    // 读取下一页偏移量
    $offset = $result['next'] ?? 0;
} while ($offset > 0);

// 打印所有拉取到的线索
echo "<pre>";
var_dump($allLeads);
echo "</pre>";

额外注意事项

  • 如果单次请求需要调整返回条数,可以加上'LIMIT' => 100参数,Bitrix CRM接口默认单页最大返回50条,部分版本支持最高调整到200条。
  • 批量拉取时注意控制请求频率,避免触发接口限流规则。

内容的提问来源于stack exchange,提问作者reventcake295

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:06:00