• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/grid/row/actions/item/createcodeitem.php
  • Класс: BitrixIblockGridRowActionsItemCreateCodeItem
  • Вызов: CreateCodeItem::processCodeTranslitElement
private function processCodeTranslitElement(int $id): Result
{
	$result = new Result();

	if (!$this->getIblockRightsChecker()->canEditElement($id))
	{
		$message = Loc::getMessage('IBLOCK_GRID_ROW_ACTIONS_CREATE_CODE_ERROR_ACCESS_DENIED_ELEMENT', [
			'#ID#' => $id,
		]);
		$result->addError(
			new Error($message)
		);

		return $result;
	}

	$row = ElementTable::getRow([
		'select' => [
			'ID',
			'NAME',
		],
		'filter' => [
			'=ID' => $id,
			'=IBLOCK_ID' => $this->getIblockId(),
		],
	]);
	if (empty($row))
	{
		return $result;
	}

	$entity = new CIBlockElement();
	$translitSettings = $this->getElementTranslitSettings();

	$fields = [
		'CODE' => CUtil::translit(
			$row['NAME'],
			LANGUAGE_ID,
			$translitSettings
		),
	];
	$updateResult = $entity->Update($id, $fields);
	if (!$updateResult && $entity->LAST_ERROR)
	{
		$result->addError(
			new Error($entity->LAST_ERROR)
		);
	}

	return $result;
}