- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/update/catalog/crmproductrowupdater.php
- Класс: Bitrix\Crm\Update\Catalog\CrmProductRowUpdater
- Вызов: CrmProductRowUpdater::execute
public function execute(array &$option): bool
{
return self::FINISH_EXECUTION;
if (
!ModuleManager::isModuleInstalled('bitrix24')
|| !Loader::includeModule('iblock')
|| !Loader::includeModule('catalog')
|| !Loader::includeModule('crm')
)
{
return self::FINISH_EXECUTION;
}
if (empty($option))
{
$crmProductRowCount = \CCrmProductRow::GetList(
[],
['PRODUCT_NAME' => '', '!=ORIGINAL_PRODUCT_NAME' => null],
[]
);
$option["steps"] = 0;
$option["count"] = (int)ceil($crmProductRowCount / self::PRODUCT_LIMIT);
}
if ($option["count"] === 0)
{
return self::FINISH_EXECUTION;
}
$crmProductRowResult = \CCrmProductRow::GetList(
['ID' => 'ASC'],
['PRODUCT_NAME' => '', '!=ORIGINAL_PRODUCT_NAME' => null],
false,
false,
['ID', 'ORIGINAL_PRODUCT_NAME'],
[
'QUERY_OPTIONS' => [
'LIMIT' => self::PRODUCT_LIMIT,
'OFFSET' => $option["steps"] * self::PRODUCT_LIMIT
]
]
);
$connection = Main\Application::getConnection();
$helper = $connection->getSqlHelper();
$query = 'UPDATE '.$helper->quote(ProductRowTable::getTableName()).' SET '.$helper->quote('PRODUCT_NAME').' = \'';
$where = '\' WHERE '.$helper->quote('ID').' = ';
while ($crmProductRow = $crmProductRowResult->Fetch())
{
$connection->query($query
. $helper->forSql($crmProductRow['ORIGINAL_PRODUCT_NAME'])
. $where . (int)$crmProductRow['ID']
);
}
$option["steps"]++;
return $option['steps'] < $option['count'] ? self::CONTINUE_EXECUTION : self::FINISH_EXECUTION;
}