• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Model/Dynamic/PrototypeItemIndex.php
  • Класс: Bitrix\Crm\Model\Dynamic\PrototypeItemIndex
  • Вызов: PrototypeItemIndex::merge
static function merge(int $itemId, string $searchContent): Result
{
	$result = new Result();
	global $DB;
	$helper = Application::getConnection()->getSqlHelper();
	$updatedTime = new DateTime();

	$insertData = [
		'SEARCH_CONTENT' => $searchContent,
		'UPDATED_TIME' => $updatedTime,
		'ITEM_ID' => $itemId,
	];

	$preparedSearchContent = $DB->forSql($searchContent);
	$encryptedSearchContent = sha1($searchContent);
	$updateData = [
		'SEARCH_CONTENT' => new SqlExpression("IF(SHA1(SEARCH_CONTENT) = '{$encryptedSearchContent}', SEARCH_CONTENT, '{$preparedSearchContent}')"),
		'UPDATED_TIME' => $updatedTime,
	];

	$merge = $helper->prepareMerge(
		static::getEntity()->getDBTableName(),
		['ITEM_ID'],
		$insertData,
		$updateData
	);

	if ($merge[0] !== '')
	{
		Application::getConnection()->query($merge[0]);

	}
	else
	{
		$result->addError(new Error('Error constructing item index merge query'));
	}

	return $result;
}