Спасибо большое!
Добавление в фильтр '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;
}
}
}
}
|