...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/activity/communicationstatistics.php
- Класс: Bitrix\Crm\Activity\CommunicationStatistics
- Вызов: CommunicationStatistics::getActivitiesCount
static function getActivitiesCount($ownerTypeId, array $ownerIds, $activity) { if (count($ownerIds) <= 0) return array(); $date = static::getDeadline($activity); $startTime = new DateTime($date->format(DateTime::getFormat())); $endTime = new DateTime($date->format(DateTime::getFormat())); $endTime->setTime(23, 59, 59); $provider = \CCrmActivity::GetActivityProvider($activity); $filter = array( '=COMPLETED' => 'Y', '>=DEADLINE' => $startTime, '<=DEADLINE' => $endTime, '=BINDINGS.OWNER_TYPE_ID' => $ownerTypeId, '@BINDINGS.OWNER_ID' => $ownerIds, ); $typeId = \CCrmActivity::GetActivityType($activity); if ($typeId !== \CCrmActivityType::Provider) $filter['=TYPE_ID'] = $typeId; else { $filter['=PROVIDER_ID'] = $provider::getId(); $filter['=PROVIDER_TYPE_ID'] = $provider::getTypeId($activity); } \CTimeZone::Disable(); $query = new Query(Crm\ActivityTable::getEntity()); $query->setFilter($filter); $query->registerRuntimeField('', new ExpressionField('CNT', "COUNT(*)")); $query->registerRuntimeField('', new ReferenceField('BINDINGS', Crm\ActivityBindingTable::getEntity(), array('=this.ID' => 'ref.ACTIVITY_ID'), array('join_type' => 'INNER') ) ); $query->addSelect('CNT'); $query->addSelect('BINDINGS.OWNER_ID', 'B_OWNER_ID'); $query->addGroup('BINDINGS.OWNER_ID'); $activitiesList = $query->exec(); \CTimeZone::Enable(); $result = array(); if ($activitiesList) { while($activity = $activitiesList->fetch()) { if (!isset($result[$activity['B_OWNER_ID']])) $result[$activity['B_OWNER_ID']] = 0; $result[$activity['B_OWNER_ID']] += $activity['CNT']; } } return $result; }