Получение сделок по фильтру

Этот PHP-код позволяет получить список сделок в Битрикс24, используя различные фильтры.

use Bitrix\Crm\DealTable;

// Параметры фильтрации
$dealId = $this->GetRootActivity()->GetVariable("DealID"); // ID конкретной сделки
$stageId = $this->GetRootActivity()->GetVariable("StageID"); // Стадия сделки
$dateFrom = $this->GetRootActivity()->GetVariable("DateFrom"); // Дата создания от (YYYY-MM-DD)
$dateTo = $this->GetRootActivity()->GetVariable("DateTo"); // Дата создания до (YYYY-MM-DD)

$arFilter = [];
if ($dealId) {
    $arFilter['ID'] = $dealId;
}
if ($stageId) {
    $arFilter['STAGE_ID'] = $stageId;
}
if ($dateFrom) {
    $arFilter['>=DATE_CREATE'] = $dateFrom . ' 00:00:00';
}
if ($dateTo) {
    $arFilter['<=DATE_CREATE'] = $dateTo . ' 23:59:59';
}

$foundDealsCount = 0;
$dealIDs = [];
$errorMessage = '';

if (empty($arFilter)) {
    $errorMessage = "КРИТИЧНО: Не указаны параметры фильтрации для получения сделок.";
    $this->WriteToTrackingService($errorMessage);
} else {
    $arSelect = ['ID'];

    $arDeals = DealTable::getList([
        'order' => ['ID' => 'DESC'],
        'filter' => $arFilter,
        'select' => $arSelect,
        'cache' => ['ttl' => 3600]
    ])->fetchAll();

    foreach ($arDeals as $deal) {
        $dealIDs[] = $deal['ID'];
    }
    $foundDealsCount = count($dealIDs);
}

$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("FoundDealsCount", $foundDealsCount);
$rootActivity->SetVariable("DealIDs", implode(",", $dealIDs));
$rootActivity->SetVariable("DealSearchErrorMessage", $errorMessage);

Параметры

  • DealID (int, optional): ID конкретной сделки для поиска.
  • StageID (string, optional): Стадия сделки для фильтрации.
  • DateFrom (string, optional): Дата создания сделки от (в формате ‘YYYY-MM-DD’).
  • DateTo (string, optional): Дата создания сделки до (в формате ‘YYYY-MM-DD’).

Возвращаемые значения

  • FoundDealsCount (int): Количество найденных сделок.
  • DealIDs (string): Строка с ID найденных сделок, разделенных запятыми.
  • DealSearchErrorMessage (string): Сообщение об ошибке, если операция не удалась.

Рекомендации по использованию

  • Используйте этот скрипт для получения списка сделок по заданным критериям.
  • Можно комбинировать различные параметры фильтрации для более точного поиска.