Найти тему
Bazaurokov.RU

Выгрузка из 1С и отмена перезаписывания полей в Битриксе

Расскажу как сделать чтоб при синхронизации в автоматическом режиме с 1С описание товаров не изменялось на сайте. Для решения нужно исключить из выгрузки поля PREVIEW_TEXT и DETAIL_TEXT. Для этого добавляет файл init.php

AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "DropPreviewText");
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "DropPreviewText");
function DropPreviewText($arFields){
if (@$_REQUEST['mode']=='import') {
      unset($arFields['PREVIEW_TEXT']);
      unset($arFields['PREVIEW_TEXT_TYPE']);
      unset($arFields['DETAIL_TEXT']);
      unset($arFields['DETAIL_TEXT_TYPE']);
   }
}

Вкратце, в init.php мы перехватываем события OnBeforeIBlockElementUpdate и OnBeforeIBlockElementAdd и запускаем свою небольшую функцию удаляющую необходимые нам поля из массива с содержимым элемента из 1С.

В моем случае это PREVIEW_TEXT и DETAIl_TEXT. Теперь при синхронизации эти поля не переписываются.