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