Поздравляю! Вы попали в архивный блог! Все новые материалы публикуются на hmdw.meX
Просмотров: 5471

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

Всем привет!

Наконец то дошли руки написать небольшой пост который возможно кому-то пригодится.

Итак, сразу к делу. Есть интернет-магазин работающий на Битрикс и синхронизирующийся в автоматическом режиме с 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. Теперь при синхронизации эти поля не переписываются.

Удачи! =)

twitter.com facebook.com vkontakte.ru odnoklassniki.ru livejournal.ru yandex.ru
Теги: ,
Эта запись опубликована: Четверг, 14 февраля 2013 в рубрике Web-разработка.

Оставьте комментарий!