Всем привет!
Наконец то дошли руки написать небольшой пост который возможно кому-то пригодится.
Итак, сразу к делу. Есть интернет-магазин работающий на Битрикс и синхронизирующийся в автоматическом режиме с 1С. Менеджерам заполняющим описания товаров намного удобнее заполнять описания через веб-интерфейс Битрикс т.к. там визуальный редактор и прочие блага цивилизации.
Но вот незадача, при очередной синхронизации с 1С описания товаров затираются описаниями оттуда (как правило пустыми). Для решения проблемы нужно исключить из выгрузки поля PREVIEW_TEXT и DETAIL_TEXT. Вот немного дописанное мной решение которое я обнаружил на просторах интернетов.
Добавляем это в init.php
<?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. Теперь при синхронизации эти поля не переписываются. Удачи! =)
- Вперед
- Назад