• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/volume/base.php
  • Класс: Bitrix\Crm\Volume\Base
  • Вызов: Base::loadTotals
public function loadTotals()
{
	$query = Crm\VolumeTable::query();

	$filter = array(
		'=INDICATOR_TYPE' => static::getIndicatorId(),
		'=OWNER_ID' => $this->getOwner(),
		'=AGENT_LOCK' => Volume\Cleaner::TASK_STATUS_NONE,
	);

	$filterExt = $this->getFilter();
	foreach ($filterExt as $key => $value)
	{
		if (empty($value))
		{
			continue;
		}
		$filter[$key] = $value;
	}

	$query
		->setFilter($filter)
		->registerRuntimeField(new ORM\Fields\ExpressionField('CNT', 'COUNT(*)'))
		->registerRuntimeField(new ORM\Fields\ExpressionField('ENTITY_SIZE', 'SUM(ENTITY_SIZE)'))
		->registerRuntimeField(new ORM\Fields\ExpressionField('ENTITY_COUNT', 'SUM(ENTITY_COUNT)'))
		->registerRuntimeField(new ORM\Fields\ExpressionField('FILE_SIZE', 'SUM(FILE_SIZE)'))
		->registerRuntimeField(new ORM\Fields\ExpressionField('FILE_COUNT', 'SUM(FILE_COUNT)'))
		->registerRuntimeField(new ORM\Fields\ExpressionField('DISK_SIZE', 'SUM(DISK_SIZE)'))
		->registerRuntimeField(new ORM\Fields\ExpressionField('DISK_COUNT', 'SUM(DISK_COUNT)'))
		->registerRuntimeField(new ORM\Fields\ExpressionField('EVENT_SIZE', 'SUM(EVENT_SIZE)'))
		->registerRuntimeField(new ORM\Fields\ExpressionField('EVENT_COUNT', 'SUM(EVENT_COUNT)'))
		->registerRuntimeField(new ORM\Fields\ExpressionField('ACTIVITY_SIZE', 'SUM(ACTIVITY_SIZE)'))
		->registerRuntimeField(new ORM\Fields\ExpressionField('ACTIVITY_COUNT', 'SUM(ACTIVITY_COUNT)'))
		->addSelect('CNT')
		->addSelect('ENTITY_SIZE')
		->addSelect('ENTITY_COUNT')
		->addSelect('FILE_SIZE')
		->addSelect('FILE_COUNT')
		->addSelect('DISK_SIZE')
		->addSelect('DISK_COUNT')
		->addSelect('EVENT_SIZE')
		->addSelect('EVENT_COUNT')
		->addSelect('ACTIVITY_SIZE')
		->addSelect('ACTIVITY_COUNT')
	;

	$res = $query->exec();
	if ($row = $res->fetch())
	{
		$this->entitySize = (double)$row['ENTITY_SIZE'];
		$this->entityCount = (double)$row['ENTITY_COUNT'];
		$this->fileSize = (double)$row['FILE_SIZE'];
		$this->fileCount = (double)$row['FILE_COUNT'];
		$this->diskSize = (double)$row['DISK_SIZE'];
		$this->diskCount = (double)$row['DISK_COUNT'];
		$this->eventSize = (double)$row['EVENT_SIZE'];
		$this->eventCount = (double)$row['EVENT_COUNT'];
		$this->activitySize = (double)$row['ACTIVITY_SIZE'];
		$this->activityCount = (double)$row['ACTIVITY_COUNT'];
	}

	return $row;
}