В чем причина проблемы?
При стандартной настройке обмена данными происходит следующее: 1С проверяет наличие описания товара в своей базе и, не обнаружив его там, но видя, что на сайте оно есть, считает это несоответствием. В результате – система перезаписывает данные, удаляя описания и другой контент, который вы добавили непосредственно через административную панель сайта.Элегантное решение проблемы
Для защиты вашего контента от непреднамеренного удаления мы предлагаем использовать встроенные в Bitrix события OnBeforeIBlockElementUpdate и OnBeforeIBlockElementAdd. Эти события позволяют перехватить процесс обновления данных и внести свои корректировки.Найдите или создайте файл инициализации:
Код необходимо добавить в файл /bitrix/php_interface/init.php. Если такого файла не существует, создайте его.
init.php
<?
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "DoNotUpdateDesc");
function DoNotUpdateDesc(&$arFields)
{
if ($_REQUEST['mode'] == 'import') {
unset($arFields['PREVIEW_TEXT_TYPE']);
unset($arFields['DETAIL_TEXT_TYPE']);
unset($arFields['PREVIEW_TEXT']);
unset($arFields['DETAIL_TEXT']);
}
}
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "DoNotAddDesc");
function DoNotAddDesc(&$arFields)
{
if ($_REQUEST['mode'] == 'import') {
unset($arFields['PREVIEW_TEXT_TYPE']);
unset($arFields['DETAIL_TEXT_TYPE']);
unset($arFields['PREVIEW_TEXT']);
unset($arFields['DETAIL_TEXT']);
}
}
?>
Как это работает
Наше решение отслеживает процесс обновления данных и проверяет:
- Происходит ли обмен данными с 1С
- Есть ли у товара на сайте описание, которое 1С пытается заменить пустым значением
Если все условия выполняются, система сохраняет текущие описания товара вместо их удаления. Это касается как полного, так и краткого описания, а также формата описаний (text, html).
Преимущества данного подхода
- Сохранность данных: Вы больше не потеряете важную информацию о товарах
- Экономия времени: Не придется повторно добавлять описания после каждой синхронизации
- Гибкость: Легко настраивается под особенности вашего каталога
- Минимальное вмешательство: Не требует изменений в настройках 1С или модулях обмена
Данное решение позволит вам совместить удобство автоматической синхронизации данных из 1С с возможностью управлять контентом непосредственно на сайте, не опасаясь его потери. В компании LIBERTY мы помогаем клиентам эффективно решать подобные технические задачи, обеспечивая стабильную работу интернет-магазинов и корпоративных сайтов на базе 1С-Битрикс.