Достаточно часто, при разработке сайтов на Битрикс, с интеграцией с 1С Управление Тороговлей, нужно запретить изменения полей при обмене. В частности, детальное описание и картинку товара.
Например: Из 1С мы выгружаем структуру каталога, цены, торговые предложения и свойства товаров, а описания и картинки добавляем на сайте уже после выгрузки. Во первых, так проще с точки зрения интерфейса, во вторых- это не дает раздуваться базе 1С
Но при обмене, данные добавленные на сайте затираются- так как 1С "видет", что у товара нет описания (в ее базе), а на сайте есть- и подчищает товар
Что бы этого не происходило, можно воспользоваться событиями OnBeforeIBlockElementUpdate и OnBeforeIBlockElementAdd. Просто добавляем в файл /bitrix/php_intarface/init.php (если файла нет-то создаем его)
В данном случае, мы запретили изменение и добавление: Картинка анонса, Детальная картинка, Текст анонса, детальный текст. Добавляя строки можно запретить любое поле товара
Например: unset($arFields['NAME']); - не даст изменяться названию товара
![]()
Санжарбек Азизов
|
Добрый день! мне необходимо настроит обмен заказами между 1С и сайтом на битрикс. Есть xml файл с заказами из 1С. Из документации понял что его нужно загружать, но не понял куда. Подскажите в какой инфоблок нужно импортировать xml файлы с заказами? Заранее спасибо
|
![]()
Михаил Базаров
|
||
![]() И запустите обмен заказами. Все, больше ни чего делать надо, 1С ка сама создаст заказы на сайте и сопоставит с полльзователями. |
||
![]()
Анастасия Гергет
|
а можно запретить перезаписывать свойство привязка к товару?
|
![]()
Олег Колчугин
|
Здравствуйте, Михаил.
Заметка очень помогла. В данный момент например у нас такая ситуация, создали в 1С новый товар, добавили ему фотографию, выполнили выгрузку в режиме изменений, товар на сайте появился, но без фото. Можно в вашем коде условие поставить, если на сайте товар без фото то при обмене мы ему цепляем картинку из 1С, если таковая приходит при обмене, а то при вашем коде получается сейчас, что картинки из 1С не цепляются к товарам? Надеюсь понятно объяснил. Спасибо. |
![]()
Alex Nevi
|
||
Олег Колчугин, эм, закомментить?
![]()
|
||
![]()
UkRA
|
а можно запретить перезаписывать свойство привязка к товару?
|
![]()
Михаил Базаров
|
||
|
||
![]()
Михаил Базаров
|
||||
|
||||
![]()
Виктор Роголев
|
Так это получается, если я правильно понял, можно запретить 1с перемещать весь товар под свою структуру каталога? Просто пытаюсь реализовать на сайте каталог отличимый от 1с, в модуле обмена настроек нет, по этому решил попробовать выгрузить как есть, раскидать как нужно, но оно всё откатывается при обмене
|
![]()
Михаил Базаров
|
||
Новые товара попадали в деактивированный раздел "Рассортировать" Но это сложность. Лучше поставте модуль обмена от Битрикс, там можно пересортировывать структуру как угодно, чисто для обмена. |
||
![]()
Gmp
|
Интересно, а запретить обновлять названия и адреса складов можно таким методом?
|
![]()
denis86
|
Михаил добрый день,
Подскажите, а как сделать, чтобы не слетали свойства товара при выгрузке из 1с? У нас есть свойство с типом список, постоянно слетает при обмене. |
![]()
Михаил Базаров
|
||
или unset($arFields['PROPERTY_КОД_СВОЙСТВА_VALUE']); Попробуйте и так и сяк и вместе. Cкорее всего вместе, что бы не слетали на само свойство ни его значения Чирканите сюда, как сработало. ![]() |
||
![]()
denis86
|
||||
|
||||
![]()
Михаил Базаров
|
||||
Но это все, методы околонаучного тыка) Пока попробовать не где, что бы точно сказать |
||||
![]()
Barmi
|
Можно совет? Эта доработка прекрасно работает, фото и описания теперь не удаляются. Но есть мелкая проблема - описания товаров переключаются в режим текст, а у меня они в визуальном режиме сделаны и получается мусор. Вот так.
Можно ли как-то запретить в битриксе или в в инит добавить строчку переключение с визуального режима редактирования? Да, я нуб. |
![]()
weboff
|
||
Спасибо. Нужно было запретить 1с менять признак активности товара. Чтобы была возможность скрыть определенные товары с сайта.
Прописал в function DoNotUpdate(&$arFields) значение
|
||
![]()
Barmi
|
||
В поле текстового описания в 1С вставляется любой форматированный кусок текста, и описания из базы остаются нормально отформатированными ![]() <p> Самый современный игровой компьютер этого достаточно чтобы не слетало на текстовый редактор. |
||
![]()
logins.zavgsg@gmail.com
|
"Добрый день!
Не могу запретить удаление дополнительных картинок. Видимо потому, что это множественное поле. Всё отрабатывает, кроме доп. картинок. <? AddEventHandler("iblock", "OnBeforeIBlockElementUpdate","DoNotUpdate"); function DoNotUpdate(&$arFields) { if ($_REQUEST['mode']=='import') { unset($arFields['PREVIEW_PICTURE']); // фото анонс unset($arFields['DETAIL_PICTURE']); // фото подробно unset($arFields['MORE_PHOTO']); // Картинки (дополнительные фото) unset($arFields['PREVIEW_TEXT']); // Описание для анонса unset($arFields['PREVIEW_TEXT_TYPE']); // Тип Описание для анонса unset($arFields['DETAIL_TEXT']); // Детальное описание unset($arFields['DETAIL_TEXT_TYPE']); // Тип Детальное описание } } |
![]()
logins.zavgsg@gmail.com
|
Сергей, <br/>, <br/>
Добрый день! Не могу запретить удаление дополнительных картинок. Видимо потому, что это множественное поле. Всё отрабатывает, кроме доп. картинок. <? AddEventHandler("iblock", "OnBeforeIBlockElementUpdate","DoNotUpdate"); function DoNotUpdate(&$arFields) { if ($_REQUEST['mode']=='import') { unset($arFields['PREVIEW_PICTURE']); // фото анонс unset($arFields['DETAIL_PICTURE']); // фото подробно unset($arFields['MORE_PHOTO']); // Картинки (дополнительные фото) unset($arFields['PREVIEW_TEXT']); // Описание для анонса unset($arFields['PREVIEW_TEXT_TYPE']); // Тип Описание для анонса unset($arFields['DETAIL_TEXT']); // Детальное описание unset($arFields['DETAIL_TEXT_TYPE']); // Тип Детальное описание } } |
![]()
Михаил Базаров
|
||
Наверное, раз уж вообще ни какие картинки не обновляете, проще отключить обмен картинками на стороне 1С. Просто снимите там галку "Выгружать картинки и файлы" |
||
![]()
Сергей
|
Логично
![]() Спасибо - помогло. |
![]()
Barmi
|
||||
![]() |
||||
![]()
Barmi
|
||
![]() |
||
![]()
Всеволод Чечун
|
||||
![]() |
||||
![]()
Настёна Лукашевич
|
Спасибо огромное! Все работает, но возникла проблема с запретом на обновление поля "остатки", необходимо что бы обмен с 1С не обновлял его(т.е. все товары условно в 0, торгуем со склада партнера).
Попробовала сделать по аналогии unset($arFields['QUANTITY'] ) ; - все равно меняется. |
![]()
Михаил Базаров
|
||
Или вообще, на стороне 1С, отключите обмен остатками, а на стороне сайта отключите Количественный учет и включите разрешение "Продавать при отсутствии товара (включая разрешение на отрицательные остатки)" |
||
![]()
Настёна Лукашевич
|
||||
|
||||
![]()
j@techboss.ru
|
||
Друзья, стоит задача УТ 11.
Битрикс последний.
Потому что не DETAIL_PICTURE_SRC и PROPERTY_DETAIL_PICTURE, а просто DETAIL_PICTURE |
||
![]()
Настёна Лукашевич
|
Подскажите, кто пользуется этим кодом. У всех работает? то ли обновления новые что-то изменили, то ли что-то еще пошло не так. Файл init работает(если сделать ошибку сайт уходит в белый экран и возвращается после корректировки) при этому даже изменение названия обработчика AddEventHandler тоже "видит" как ошибку. При этом упорно игнорирует все что прошено. Т.е. поля при обмене перезатираются, хотя он работал.
|
На нем, уже много видеоуроков по 1С-Битрикс. Как одиночные видео так и серии видеоуроков Перейти на канал
Совсем скоро выйдет видеокурс по разработке доски объявлений с мобильным приложением. Подписывайтесь и будьте в курсе: