Думаю, Иван имел в виду, перегенератор символьных кодов руками написать.

Вот Вам готовый скрипт:
Код |
---|
<?
if(!CModule::IncludeModule("iblock"))
{
echo "Error with iblock module!";
die;
}
$arOrder = array(
"sort" => "inc",
);
$arFilter = array(
"IBLOCK_ID" => !!!SOME_IBLOCK_ID!!!,
"IBLOCK_LID" => SITE_ID,
"CODE" => "",
);
//Параметры функции транслитерации
$arTransParams = array(
"max_len" => 40,
"change_case" => false,
"replace_space" => '_',
"replace_other" => '_',
"delete_repeat_replace" => true,
);
$db_elemens = CIBlockElement::GetList($arOrder, $arFilter, false, array("nTopCount" => 100));
$i = 0;
echo '<pre>';
while($obElement = $db_elemens->GetNextElement())
{
$ar_res = $obElement->GetFields();
$transName = CUtil::translit($ar_res["NAME"], "ru", $arTransParams); //Используем системную функцию транслитерации
$arPropArray = Array( "CODE" => $transName, );
$el = new CIBlockElement;
$res = $el->Update($ar_res["ID"], $arPropArray);
echo "result for ".$ar_res["NAME"]." is ".$transName.($res?"and OK":"and failed")."\r\n";
}
echo '</pre>';
?> |
Только не забудьте подставить нужный айдишник ИБ, и подберите значение nTopCount (за раз, если время жизни скрипта ограничено ваше количество все-равно не успеет обработать), хотя можно и без него - просто на 500й ошибке будет заканчиваться. Функцию транслитерации подбирайте/пишите сами.