$test = Bitrix\Main\FileTable::GetList();
$goods = CIBlockElement::GetList('', array('IBLOCK_ID' => 7));
$arPics = [];
while($p = $goods->fetch()){
$pic = CFile::getById($p['DETAIL_PICTURE'])->fetch();
//var_dump($pic);
$arPics[$p['ID']] = ['ID' => $p['DETAIL_PICTURE'],'NAME' => $pic['FILE_NAME'], 'DIR' => $pic['SUBDIR']];
}
foreach($arPics as $key => $arPic){
if(stripos($arPic['NAME'], ' ') != false){
$arPic['NAME'] = str_replace(" ", "-", $arPic['NAME']);
//COPYFILE
$newPic = CFile::CopyFile($arPic['ID'], false, $arPic['DIR'].'/'.$arPic['NAME']);
//update элемента
$upd = new CIBlockElement;
$upd->Update($key, array('DETAIL_PICTURE' => CFile::MakeFileArray('/upload/'.$arPic['DIR'].'/'.$arPic['NAME'])));
//удаление старых файлов
CFile::Delete($arPic['ID']);
}
}
Проблема: если в названии изображения есть пробелы в письмах такие изображения не будут отображаться т.к. почтовики заменяют пробелы на плюсы Решение: Мы написали скрипт который переименовывает все фотки в каталоге и заменяет пробел на тире