- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/statistics/leadactivitystatisticentry.php
- Класс: Bitrix\Crm\Statistics\LeadActivityStatisticEntry
- Вызов: LeadActivityStatisticEntry::prepareTimeline
static function prepareTimeline($ownerID)
{
if(!is_int($ownerID))
{
$ownerID = (int)$ownerID;
}
if($ownerID <= 0)
{
throw new Main\ArgumentException('Owner ID must be greater than zero.', 'ownerID');
}
$query = new Query(Crm\ActivityTable::getEntity());
$query->addFilter('=COMPLETED', 'Y');
$connection = Main\Application::getConnection();
if($connection instanceof Main\DB\MysqlCommonConnection)
{
$query->registerRuntimeField('', new ExpressionField('DEADLINE_DATE', 'DATE(DEADLINE)'));
}
elseif($connection instanceof Main\DB\MssqlConnection)
{
$query->registerRuntimeField('', new ExpressionField('DEADLINE_DATE', 'CAST(FLOOR(CAST(DEADLINE AS FLOAT)) AS DATETIME)'));
}
elseif($connection instanceof Main\DB\OracleConnection)
{
$query->registerRuntimeField('', new ExpressionField('DEADLINE_DATE', 'TRUNC(DEADLINE)'));
}
$query->addSelect('DEADLINE_DATE');
$query->addGroup('DEADLINE_DATE');
$subQuery = new Query(Crm\ActivityBindingTable::getEntity());
$subQuery->addSelect('ACTIVITY_ID');
$subQuery->addFilter('=OWNER_TYPE_ID', \CCrmOwnerType::Lead);
$subQuery->addFilter('=OWNER_ID', $ownerID);
$query->registerRuntimeField('',
new ReferenceField('B',
Base::getInstanceByQuery($subQuery),
array('=this.ID' => 'ref.ACTIVITY_ID'),
array('join_type' => 'INNER')
)
);
$dbResult = $query->exec();
$dates = array();
while($fieilds = $dbResult->fetch())
{
$dates[] = $fieilds['DEADLINE_DATE'];
}
return $dates;
}