При разработке интернет магазина на 1С-Битрикс бывают ситуации, когда выгружаются только названия товаров, цены и остатки. Подробные описания и картинки добавляются уже самостоятельно после этого. Для того, чтобы запретить при обмене с 1С изменять нужные поля, можно воспользоваться кодом:
<?
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate","SaveItem");
function SaveItem(&$arFields)
{
if (!empty($_REQUEST['mode']) && $_REQUEST['mode']=='import') {
// запрет смены рубрики
$db_old_groups = CIBlockElement::GetElementGroups($arFields['ID'], true);
$arFields['IBLOCK_SECTION'] = [];
while($ar_group = $db_old_groups->Fetch()) {
if(!in_array($ar_group['ID'],$arFields['IBLOCK_SECTION'])) {
$arFields['IBLOCK_SECTION'][]=$ar_group['ID'];
}
}
// запрет смены превью
unset($arFields['PREVIEW_PICTURE']);
// запрет смены детальной картинки
unset($arFields['DETAIL_PICTURE']);
// запрет смены текста превью
unset($arFields['PREVIEW_TEXT']);
// запрет смены детального текста
unset($arFields['DETAIL_TEXT']);
}
}
Данный код необходимо разместить в файле /bitrix/php_interface/init.php, а если его нет - то создать