Как написал в сегодняшней (да, смотри дату) статье на Хабре один очень здравый человек - Все программисты попадают в Тай. И потому как Битрикс это СПИД, обсуждение данной тематики было опущено.
Поэтому... простого способа нет.
Ты делаешь
$id = CIBlockElement:GetList(null,['code' => to_translit($name)]);
if ($res) CIBlockElement:Update($id, $fields);
else CIBlockElement:Add($fields);
CCatalogProduct:GetList()
...см выше
CPrice:GetList();
...см выше
И все это в foreach.
Из важного CCatalogProduct использует в качестве ID - id элемента инфоблока. Т.е. id полученный в прошлых трех строках.
А вот CPrice использует ID цены, и его нельзя даже
обновить, не указав $fields['product_id' => $id]
И да, теперь ты осознаешь почему Битрикс это СПИД. Потому что убедить падких на красоту директоров в том, что это ужас можно только быстро написанной js-иньекцией, которая вставляется любым менеджером в код новости, что позволяет унести пароль совершенно любого администратора.
Потому что единственное чего боятся боссы - уязвимости по безопасности, они в этом никак. Ну то есть - на коленке написанный скрипт вида $($.ajax("/logout")), а если его додумать (что и сделал автор статьи) - то хапается пароль, который чел вводит в свое окошко и все это из скрипта, добавленного менеджером через админ-панель, если он решит стать программистом.
Ну то есть слова они не услышат, совсем.