Оформите самостоятельно, я с мобилки.
Можно также CPrice::GetList опустить с апдейтом или вынести вне цикла, предварительно собрав ID элементов.
Если много элементов, то разбить на части выполнение, либо 4-й параметр nPageSize, iNumPage. либо один раз считать idшники в сессию/файл,
$PRICE_TYPE_ID = 1;
$IBLOCK_ID = 8;
$res = CIBlockElement::GetList([], ["IBLOCK_ID" => $IBLOCK_ID], false, false, ["ID"]);
while ($item = $res->Fetch())
{
$PRODUCT_ID = $item["ID"];
$arFields = Array(
"PRODUCT_ID" => $PRODUCT_ID,
"CATALOG_GROUP_ID" => $PRICE_TYPE_ID,
"PRICE" => 1,
"CURRENCY" => "RUB",
);
$res = CPrice::GetList(
array(),
array(
"PRODUCT_ID" => $PRODUCT_ID,
"CATALOG_GROUP_ID" => $PRICE_TYPE_ID
)
);
if ($arr = $res->Fetch())
{
CPrice::Update($arr["ID"], $arFields);
}
else
{
CPrice::Add($arFields);
}
}