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

	$keyFields = array(
		'INDICATOR_TYPE',
		'OWNER_ID',
		'DATE_CREATE',
		'STAGE_SEMANTIC_ID',
	);
	$updateFields = array(
		'ENTITY_SIZE',
		'ENTITY_COUNT',
		'FILE_SIZE',
		'FILE_COUNT',
		'DISK_SIZE',
		'DISK_COUNT',
		'EVENT_SIZE',
		'EVENT_COUNT',
		'ACTIVITY_SIZE',
		'ACTIVITY_COUNT',
	);

	$target = $connection->getSqlHelper()->quote(Crm\VolumeTable::getTableName());

	$query = Crm\VolumeTmpTable::query();
	$query
		->setSelect(array_merge($keyFields, $updateFields))
		->setFilter(array(
			'=INDICATOR_TYPE' => static::getIndicatorId(),
			'=OWNER_ID' => $this->getOwner(),
		));
	$sourceSql = $query->getQuery();

	$columns = $update = array();
	foreach ($keyFields as $field)
	{
		$field = $connection->getSqlHelper()->quote($field);
		$columns[] = $field;
	}
	foreach ($updateFields as $field)
	{
		$field = $connection->getSqlHelper()->quote($field);
		$columns[] = $field;
		$update[] = "{$target}.{$field} = {$target}.{$field} + VALUES({$field})";
	}

	$sqlIns =
		"INSERT INTO {$target} (". implode(', ', $columns). ") {$sourceSql} ".
		"ON DUPLICATE KEY UPDATE ". implode(', ', $update)
	;

	$connection->queryExecute($sqlIns);
}