• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/report/handler/order/basegrid.php
  • Класс: Bitrix\Crm\Integration\Report\Handler\Order\BaseGrid
  • Вызов: BaseGrid::addActivityCounterFilter
protected function addActivityCounterFilter(array &$filter, array &$glFilter, array &$runtime)
{
	if (is_array($filter['ACTIVITY_COUNTER']))
	{
		$counterTypeID = \Bitrix\Crm\Counter\EntityCounterType::joinType(
			array_filter($filter['ACTIVITY_COUNTER'], 'is_numeric')
		);
	}
	else
	{
		$counterTypeID = (int)$filter['ACTIVITY_COUNTER'];
	}

	if (\Bitrix\Crm\Counter\EntityCounterType::isDefined($counterTypeID))
	{
		$counterUserIDs = array();

		if(isset($filter['RESPONSIBLE_ID']))
		{
			if(is_array($filter['RESPONSIBLE_ID']))
			{
				$counterUserIDs = array_filter($filter['RESPONSIBLE_ID'], 'is_numeric');
			}
			elseif($filter['RESPONSIBLE_ID'] > 0)
			{
				$counterUserIDs[] = $filter['RESPONSIBLE_ID'];
			}
		}

		if(empty($counterUserIDs))
		{
			$counterUserIDs[] = \CCrmSecurityHelper::GetCurrentUserID();
		}

		$counter = \Bitrix\Crm\Counter\EntityCounterFactory::create(
			\CCrmOwnerType::Order,
			$counterTypeID,
			0
		);
		$activityFilterSql = $counter->getEntityListSqlExpression([
			'USER_IDS' => $counterUserIDs
		]);
		if (!empty($activityFilterSql))
		{
			if (isset($glFilter['@ID']))
			{
				$glFilter[] = [
					'@ID' => new \Bitrix\Main\DB\SqlExpression($activityFilterSql)
				];
			}
			else
			{
				$glFilter['@ID'] =  new \Bitrix\Main\DB\SqlExpression($activityFilterSql);
			}
		}
	}
}