Задать вопрос
@stassilin

Почему удаляются фото после выгрузки, уже загруженные ранее, на сайте 1С Битрикс?

Есть сайт на 1с-Битрикс, стоит автоматическая выгрузка товаров на сайт из 1С Предприятие.
Фото добавляем на сайте, но если товар заканчивается и потом появляется вновь, после новой выгрузки товаров, то фото приходится загружать заново. Как сделать, чтобы фото привязывались к товару и не удалялись после выгрузки?
В чем может быть проблема?
В сети не могу найти ответа..
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 3
@koder_1
Битрикс программист
Из Вашего описания вообще выходит, что после того, как товар заканчивается, то у вас в 1с создается новый товар и новый товар на сайт выгружается?
Значит, в момент, когда товар кончается, у вас стоит опция удалить товар?
А надо сделать вместо этой опции - деактивировать товар.
Тогда в следующий раз, когда товар выгрузится, он выгрузится в тот же товар и активируется, картинка при этом сохранится.

Если в выгрузке приходит товар без картинки, то картинка в Битриксе удаляется.
Лечится написанием обработчика на событие изменение товара, где проверяем, если это выгрузка из 1с и картинка пустая, то удаляем поле картинка.
Ответ написан
Комментировать
cyber-jet
@cyber-jet
Смотрите настройки обмена, а именно:
1. Выгружаются ли товары с нулевым остатком.
2. Что делается с товарами отсутствующими в выгрузке.
Если товары с нулевым остатком не выгружаются и товары которых нет в выгрузке удаляются, то ответ очевиден.

PS: Лучше всё-же хранить картинки в 1C так проще администрировать каталог.
Ответ написан
Комментировать
alex_konyaev
@alex_konyaev
Автоматизация бизнеса PanTheon
При обновление есть событие, нужно удалить из массива данные о картинках.
Добавить код в /bitrix/php_interface/init.php (если файла нет - создайте)
Логика - картинка будет добавляться при добавлении нового товара, но при обновлении товара - нет.
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate","DoNotUpdate");
function DoNotUpdate(&$arFields) {
    if ($_REQUEST['mode']=='import')
    {
        unset($arFields['PREVIEW_PICTURE']);
        unset($arFields['DETAIL_PICTURE']);
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы