...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/mysql/crm_product_row.php
- Класс: \CCrmProductRow
- Вызов: CCrmProductRow::DoSaveRows
static function DoSaveRows($ownerType, $ownerID, array $arRows) { global $DB; static::$originalRows = $arRows; if(!is_int($ownerID)) { $ownerID = (int)$ownerID; } $insertRows = array(); $updateRows = array(); $deleteRows = array(); foreach($arRows as $index => $row) { if(isset($row['ID']) && $row['ID'] > 0) { $updateRows[$row['ID']] = $row; } else { $row['ORIGINAL_INDEX'] = $index; $insertRows[] = $row; } } $dbResult = self::GetList( array('ID'=>'ASC'), array('=OWNER_TYPE' => $ownerType, '=OWNER_ID' => $ownerID) ); if(is_object($dbResult)) { while($row = $dbResult->Fetch()) { $ID = $row['ID']; if(!isset($updateRows[$ID])) { $deleteRows[] = $ID; } elseif(!self::NeedForUpdate($row, $updateRows[$ID])) { unset($updateRows[$ID]); } } } $tableName = self::TABLE_NAME; if(!empty($deleteRows)) { $scriptValues = implode(',', $deleteRows); $DB->Query("DELETE FROM {$tableName} WHERE ID IN ({$scriptValues})", false, 'FILE: '.__FILE__.'
LINE: '.__LINE__); $reservationTableName = \Bitrix\Crm\Reservation\Internals\ProductRowReservationTable::getTableName(); $DB->Query( "DELETE FROM {$reservationTableName} WHERE ROW_ID IN ({$scriptValues})", true ); } if(!empty($updateRows)) { foreach($updateRows as $ID => $row) { unset($row['ID'], $row['OWNER_TYPE'], $row['OWNER_ID']); if ($row['TAX_RATE'] === null) { $row['TAX_RATE'] = false; } $scriptValues = $DB->PrepareUpdate($tableName, $row); $DB->Query("UPDATE {$tableName} SET {$scriptValues} WHERE ID = {$ID}", false, 'FILE: '.__FILE__.'
LINE: '.__LINE__); } } if(!empty($insertRows)) { if (self::$perRowInsert) { foreach($insertRows as $row) { unset($row['ID']); $row['OWNER_TYPE'] = $ownerType; $row['OWNER_ID'] = $ownerID; if ($row['TAX_RATE'] === null) { $row['TAX_RATE'] = false; } if ($row['XML_ID'] === null) { $row['XML_ID'] = false; } $data = $DB->PrepareInsert($tableName, $row); $DB->Query( "INSERT INTO {$tableName}({$data[0]}) VALUES ({$data[1]})", false, 'File: '.__FILE__.'
Line: '.__LINE__ ); static::$originalRows[$row['ORIGINAL_INDEX']]['ID'] = (int)$DB->LastID(); } } else { $scriptColumns = ''; $scriptValues = ''; foreach($insertRows as $row) { unset($row['ID']); $row['OWNER_TYPE'] = $ownerType; $row['OWNER_ID'] = $ownerID; if ($row['TAX_RATE'] === null) { $row['TAX_RATE'] = false; } if ($row['XML_ID'] === null) { $row['XML_ID'] = false; } $data = $DB->PrepareInsert($tableName, $row); if($scriptColumns === '') { $scriptColumns = $data[0]; } if($scriptValues !== '') { $scriptValues .= ",({$data[1]})"; } else { $scriptValues = "({$data[1]})"; } } $DB->Query( "INSERT INTO {$tableName}({$scriptColumns}) VALUES {$scriptValues}", false, 'File: '.__FILE__.'
Line: '.__LINE__ ); } } return true; }