Примерно так, можно лучше запрос сделать, но на раз сойдет - этот код установит значение по умолчанию
\Bitrix\Main\Loader::includeModule('iblock');
\Bitrix\Main\Loader::includeModule('catalog');
$iblocksId = [2, 3];
$iterator = \Bitrix\Iblock\ElementTable::getList([
'select' => ['IBLOCK_ID', 'ID'],
'filter' => ['IBLOCK_ID' => $iblocksId, '!PRODUCT.CAN_BUY_ZERO' => 'D', '!PRODUCT.TYPE' => \Bitrix\Catalog\ProductTable::TYPE_SKU],
'runtime' => [
'PRODUCT' => [
'data_type' => '\Bitrix\Catalog\ProductTable',
'reference' => ['=this.ID' => 'ref.ID']
]
]
]);
$elements = [];
while($row = $iterator->fetch()) {
$elements[] = $row;
}
foreach($elements as $element) {
CCatalogProduct::Update($element['ID'], ['CAN_BUY_ZERO' => 'D']);
}
echo 'Количество = '.count($elements);
$iblocksId - id-шники инфоблоков Каталог и Торговые предложения, если торговых предложений нет, укажи только ид каталога
Потом в ответах там скрин человек скинул, выставь настройки по умолчанию
В компоненте каталога должен быть указан PRICE_CODE