- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/volume/event.php
- Класс: Bitrix\Crm\Volume\Event
- Вызов: Event::measureEntity
public function measureEntity()
{
self::loadTablesInformation();
$query = $this->prepareQuery();
if ($this->prepareFilter($query))
{
$avgEventTableRowLength = (double)self::$tablesInformation[Crm\EventTable::getTableName()]['AVG_SIZE'];
$connection = Main\Application::getConnection();
$this->checkTemporally();
$data = array(
'INDICATOR_TYPE' => '',
'OWNER_ID' => '',
'DATE_CREATE' => new Main\Type\Date(),
'ENTITY_COUNT' => '',
'ENTITY_SIZE' => '',
);
$insert = $connection->getSqlHelper()->prepareInsert(Crm\VolumeTmpTable::getTableName(), $data);
$sqlIns = 'INSERT INTO '.$connection->getSqlHelper()->quote(Crm\VolumeTmpTable::getTableName()). '('. $insert[0]. ') ';
$query
->registerRuntimeField(new ORM\Fields\ExpressionField('INDICATOR_TYPE', '\''.static::getIndicatorId().'\''))
->addSelect('INDICATOR_TYPE')
->registerRuntimeField(new ORM\Fields\ExpressionField('OWNER_ID', '\''.$this->getOwner().'\''))
->addSelect('OWNER_ID')
//date
->addSelect('DATE_CREATED_SHORT')
->addGroup('DATE_CREATED_SHORT')
->registerRuntimeField(new ORM\Fields\ExpressionField('ENTITY_COUNT', 'COUNT(DISTINCT %s)', 'EVENT_ID'))
->addSelect('ENTITY_COUNT')
->registerRuntimeField(new ORM\Fields\ExpressionField(
'ENTITY_SIZE',
'COUNT(DISTINCT %s) * '.$avgEventTableRowLength,
'ID'
))
->addSelect('ENTITY_SIZE');
$querySql = $sqlIns. $query->getQuery();
$connection->queryExecute($querySql);
$this->copyTemporallyData();
}
return $this;
}