• Модуль: 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;
}