Через SQL нельзя делать, да хотя бы потому, что в разных таблицах могут быть зависимости. Получите потом ошибки и глюки.
Свойство можно присвоить так:
https://dev.1c-bitrix.ru/api_help/iblock/classes/c...
Прогнать выше код можно циклом через ГетЛист, сделав отбор нужных вам элементов
https://dev.1c-bitrix.ru/api_help/iblock/classes/c...
Вот *овнокод как изменить цену у некоторых товаров, со свойством тот же принцип:
<?
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
//это просто нужно
CModule::IncludeModule("catalog");
// подключаем модуль каталога
$arSelect = Array("ID", "IBLOCK_ID", "CATALOG_PRICE_1");
// выбираем поля
$arFilter = Array("IBLOCK_ID"=>8, "CATALOG_PRICE_1" => '9000');
// фильтруем, выбирая инфоблок и товары с ценой в 9000 рублей, сюда же можно вписать свойства
$resw = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>1000000), $arSelect);
while($ob = $resw->GetNextElement()){
$arFields = $ob->GetFields();
$arProps = $ob->GetProperties();
{
//echo $arFields[ID].' - '.$arFields['CATALOG_PRICE_1'].'</br>';
$PRODUCT_ID = $arFields[ID];
$PRICE_TYPE_ID = 1;
$arFields = Array(
"PRODUCT_ID" => $PRODUCT_ID,
"CATALOG_GROUP_ID" => $PRICE_TYPE_ID,
"PRICE" => '9500', //повысим цены с 9000 до 9500
"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);
};
}
};