Спасибо большое!
Добавление в фильтр 'OWNER_TYPE_ID' => CCrmOwnerType::ResolveID('DEAL') частично решило проблему. CCrmActivity::GetList прекрасно выдает активити типа "Задача" в числе прочих.
Однако выяснил другую проблему, CCrmActivity::GetList не учитывает сущности, которые отправили в Ожидание (кнопка "Ждать" на таймлайне). Активити типа "Ожидание" вообще не указываются в списке активити, связанных с сущностью CRM. Именно из-за этого возникает разница между результатами штатного фильтра в CRM и выборки в скрипте...
Решил это с помощью Bitrix\Crm\Pseudoactivity\WaitEntry::getRecentByOwner , который принимая ID типа сущности и ID сущности выдает массив полей действующего активити "Ожидание", если ожидания нет - то ничего не возвращяет.
Добавление в фильтр 'OWNER_TYPE_ID' => CCrmOwnerType::ResolveID('DEAL') частично решило проблему. CCrmActivity::GetList прекрасно выдает активити типа "Задача" в числе прочих.
Однако выяснил другую проблему, CCrmActivity::GetList не учитывает сущности, которые отправили в Ожидание (кнопка "Ждать" на таймлайне). Активити типа "Ожидание" вообще не указываются в списке активити, связанных с сущностью CRM. Именно из-за этого возникает разница между результатами штатного фильтра в CRM и выборки в скрипте...
Решил это с помощью Bitrix\Crm\Pseudoactivity\WaitEntry::getRecentByOwner , который принимая ID типа сущности и ID сущности выдает массив полей действующего активити "Ожидание", если ожидания нет - то ничего не возвращяет.
Код |
---|
$deal_free = 0; $deal = CCrmDeal::GetListEx(array(), array('ASSIGNED_BY_ID'=>$user_id,'CLOSED'=>'N'), false, false, array()); while ($ar = $deal->Fetch()) { if ($ar['CATEGORY_ID'] == '6' or $ar['CATEGORY_ID'] == '7') { $deal_free_bool = 0; $deal_wait = ''; $deal_wait = Bitrix\Crm\Pseudoactivity\WaitEntry::getRecentByOwner(CCrmOwnerType::ResolveID('DEAL'),$ar['ID']); if ($deal_wait == '') { $deal_activity = CCrmActivity::GetList(array(), array('OWNER_ID'=>$ar['ID'], 'STATUS'=>1), false, false, array()); while ($ar_deal = $deal_activity->Fetch()) { $deal_free_bool = 1; } if ($deal_free_bool != 1) { $deal_free = $deal_free+1; } } } } |