При разработке интернет магазина на 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, а если его нет - то создать