• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/volume/contact.php
  • Класс: Bitrix\Crm\Volume\Contact
  • Вызов: Contact::measureEvent
public function measureEvent($additionEventFilter = array())
{
	$query = $this->prepareQuery();

	if ($this->prepareFilter($query))
	{
		self::loadTablesInformation();

		$querySql = $this->prepareEventRelationQuerySql(array(
			'EVENT_DATE_CREATED' => 'DATE_CREATED_SHORT',
		));

		if ($querySql != '')
		{
			$avgEventTableRowLength = (double)self::$tablesInformation[Crm\EventTable::getTableName()]['AVG_SIZE'];

			$querySql = "
				SELECT 
					'".static::getIndicatorId()."' as INDICATOR_TYPE,
					'".$this->getOwner()."' as OWNER_ID,
					'-' as STAGE_SEMANTIC_ID,
					EVENT_DATE_CREATED as DATE_CREATE,
					(	FILE_SIZE +
						EVENT_COUNT * {$avgEventTableRowLength} ) as EVENT_SIZE,
					EVENT_COUNT
				FROM 
				(
					{$querySql}
				) src
			";

			Crm\VolumeTable::updateFromSelect(
				$querySql,
				array(
					'EVENT_SIZE' => 'destination.EVENT_SIZE + source.EVENT_SIZE',
					'EVENT_COUNT' => 'destination.EVENT_COUNT + source.EVENT_COUNT',
				),
				array(
					'INDICATOR_TYPE' => 'INDICATOR_TYPE',
					'OWNER_ID' => 'OWNER_ID',
					'DATE_CREATE' => 'DATE_CREATE',
					'STAGE_SEMANTIC_ID' => 'STAGE_SEMANTIC_ID',
				)
			);
		}
	}

	return $this;
}