Запретить изменения описаний товаров при выгрузке из 1С УТ на сайт

Достаточно часто, при разработке сайтов на Битрикс, с интеграцией с 1С Управление Тороговлей, нужно запретить изменения полей при обмене. В частности, детальное описание и картинку товара.

Например: Из 1С мы выгружаем структуру каталога, цены, торговые предложения и свойства товаров, а описания и картинки добавляем на сайте уже после выгрузки. Во первых, так проще с точки зрения интерфейса, во вторых- это не дает раздуваться базе 1С

Но при обмене, данные добавленные на сайте затираются- так как 1С "видет", что у товара нет описания (в ее базе), а на сайте есть- и подчищает товар

Что бы этого не происходило, можно воспользоваться событиями OnBeforeIBlockElementUpdate и OnBeforeIBlockElementAdd. Просто добавляем в файл /bitrix/php_intarface/init.php (если файла нет-то создаем его)

<?
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate","DoNotUpdate");
function DoNotUpdate(&$arFields)
{
    if ($_REQUEST['mode']=='import')
    {
        unset($arFields['PREVIEW_PICTURE']);
        unset($arFields['DETAIL_PICTURE']);
        unset($arFields['PREVIEW_TEXT']);
        unset($arFields['DETAIL_TEXT']);
    }
}
AddEventHandler("iblock", "OnBeforeIBlockElementAdd","DoNotAdd");
function DoNotAdd(&$arFields)
{
    if ($_REQUEST['mode']=='import')
    {
        unset($arFields['PREVIEW_PICTURE']);
        unset($arFields['DETAIL_PICTURE']);
        unset($arFields['PREVIEW_TEXT']);
        unset($arFields['DETAIL_TEXT']);
    }
}
?>

В данном случае, мы запретили изменение и добавление: Картинка анонса, Детальная картинка, Текст анонса, детальный текст. Добавляя строки можно запретить любое поле товара

Например: unset($arFields['NAME']); - не даст изменяться названию товара

Все заметки
Уважаемый читатель! В связи с участившимся спамом в комментариях, возможность писать доступна только для зарегистрированных пользователей

Зарегистрироваться Войти
Напомнить пароль

Быстрая регистрация через соц.сеть:
Санжарбек Азизов
Добрый день! мне необходимо настроит обмен заказами между 1С и сайтом на битрикс. Есть xml файл с заказами из 1С. Из документации понял что его нужно загружать, но не понял куда. Подскажите в какой инфоблок нужно импортировать xml файлы с заказами? Заранее спасибо
Михаил Базаров
Цитата
Санжарбек Азизов написал:
Добрый день! мне необходимо настроит обмен заказами между 1С и сайтом на битрикс. Есть xml файл с заказами из 1С. Из документации понял что его нужно загружать, но не понял куда. Подскажите в какой инфоблок нужно импортировать xml файлы с заказами? Заранее спасибо
Не надо его в инфоблок. Просто включите обмен заказами, предварительно выгрузив контрагентов- как пользователей. На стороне сайта проверьте настройки обмена



И запустите обмен заказами. Все, больше ни чего делать надо, 1С ка сама создаст заказы на сайте и сопоставит с полльзователями.
Анастасия Гергет
а можно запретить перезаписывать свойство привязка к товару?
Олег Колчугин
Здравствуйте, Михаил.
Заметка очень помогла.
В данный момент например у нас такая ситуация, создали в 1С новый товар, добавили ему фотографию, выполнили выгрузку в режиме изменений, товар на сайте появился, но без фото. Можно в вашем коде условие поставить, если на сайте товар без фото то при обмене мы ему цепляем картинку из 1С, если таковая приходит при обмене, а то при вашем коде получается сейчас, что картинки из 1С не цепляются к товарам?
Надеюсь понятно объяснил. Спасибо.
Alex Nevi
Олег Колчугин, эм, закомментить? ;)
Код
///unset($arFields['PREVIEW_PICTURE']);  
//unset($arFields['DETAIL_PICTURE']);

© 2011—2017 Частный вебмастер: ИП Базаров, ОГРНИП: 315784700173692. Работает на 1С-Битрикс.

Копирование материалов запрещено: "ГК РФ, часть 4, раздел VII: Права на результаты интеллектуальной деятельности".

Информация размещенная на сайте, не является публичной офертой.
Политика конфеденциальности