Достаточно часто, при разработке сайтов на Битрикс, с интеграцией с 1С Управление Тороговлей, нужно запретить изменения полей при обмен. В частности, детальное описание и картинку товара.
Запретить изменения описаний товаров при выгрузке из 1С УТ на сайт
Михаил Базаров: 12.08.2016 08:33:04
Запретить изменения описаний товаров при выгрузке из 1С УТ на сайт
Достаточно часто, при разработке сайтов на Битрикс, с интеграцией с 1С Управление Тороговлей, нужно запретить изменения полей при обмен. В частности, детальное описание и картинку товара. |
Олег Колчугин: 08.06.2017 06:58:32
Здравствуйте, Михаил.
Заметка очень помогла. В данный момент например у нас такая ситуация, создали в 1С новый товар, добавили ему фотографию, выполнили выгрузку в режиме изменений, товар на сайте появился, но без фото. Можно в вашем коде условие поставить, если на сайте товар без фото то при обмене мы ему цепляем картинку из 1С, если таковая приходит при обмене, а то при вашем коде получается сейчас, что картинки из 1С не цепляются к товарам? Надеюсь понятно объяснил. Спасибо. |
Alex Nevi: 30.06.2017 21:08:39
Олег Колчугин, эм, закомментить?
![]()
|
Виктор Роголев: 22.03.2018 22:57:27
Так это получается, если я правильно понял, можно запретить 1с перемещать весь товар под свою структуру каталога? Просто пытаюсь реализовать на сайте каталог отличимый от 1с, в модуле обмена настроек нет, по этому решил попробовать выгрузить как есть, раскидать как нужно, но оно всё откатывается при обмене
|
Михаил Базаров: 23.03.2018 10:58:43
Тут сложнее. На одном из проектов, сделал так что бы структура каталогов вообще не выгружалась, а товары обновлялись по XML-ID.
Новые товара попадали в деактивированный раздел "Рассортировать" Но это сложность. Лучше поставте модуль обмена от Битрикс, там можно пересортировывать структуру как угодно, чисто для обмена. |
Gmp: 29.03.2018 23:10:20
Интересно, а запретить обновлять названия и адреса складов можно таким методом?
|
Barmi: 23.06.2018 10:15:35
Можно совет? Эта доработка прекрасно работает, фото и описания теперь не удаляются. Но есть мелкая проблема - описания товаров переключаются в режим текст, а у меня они в визуальном режиме сделаны и получается мусор.
Можно ли как-то запретить в битриксе или в в инит добавить строчку переключение с визуального режима редактирования? Да, я нуб. |
weboff: 26.06.2018 11:03:26
Спасибо. Нужно было запретить 1с менять признак активности товара. Чтобы была возможность скрыть определенные товары с сайта.
Прописал в function DoNotUpdate(&$arFields) значение
|
Barmi: 14.07.2018 10:05:54
В поле текстового описания в 1С вставляется любой форматированный кусок текста, и описания из базы остаются нормально отформатированными ![]() <p> Самый современный игровой компьютер этого достаточно чтобы не слетало на текстовый редактор. |
logins.zavgsg@gmail.com: 02.10.2018 11:29:24
"Добрый день!
Не могу запретить удаление дополнительных картинок. Видимо потому, что это множественное поле. Всё отрабатывает, кроме доп. картинок. <? 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']); // Тип Детальное описание } } |
Михаил Базаров: 02.10.2018 12:41:11
Наверное, раз уж вообще ни какие картинки не обновляете, проще отключить обмен картинками на стороне 1С. Просто снимите там галку "Выгружать картинки и файлы"
|
Сергей: 02.10.2018 20:14:09
Логично
![]() Спасибо - помогло. |
Barmi: 22.10.2018 09:15:34
![]() |
Barmi: 22.10.2018 09:38:41
![]() |
Всеволод Чечун: 25.10.2018 09:15:44
![]() |
Настёна Лукашевич: 08.11.2018 17:44:24
Спасибо огромное! Все работает, но возникла проблема с запретом на обновление поля "остатки", необходимо что бы обмен с 1С не обновлял его(т.е. все товары условно в 0, торгуем со склада партнера).
Попробовала сделать по аналогии unset($arFields['QUANTITY'] ) ; - все равно меняется. |
Михаил Базаров: 08.11.2018 23:33:38
Или вообще, на стороне 1С, отключите обмен остатками, а на стороне сайта отключите Количественный учет и включите разрешение "Продавать при отсутствии товара (включая разрешение на отрицательные остатки)" |
Настёна Лукашевич: 12.11.2018 12:56:25
|
j@techboss.ru: 29.11.2018 17:09:09
Друзья, стоит задача УТ 11.
Битрикс последний.
Потому что не DETAIL_PICTURE_SRC и PROPERTY_DETAIL_PICTURE, а просто DETAIL_PICTURE |
Настёна Лукашевич: 05.12.2018 15:21:04
Подскажите, кто пользуется этим кодом. У всех работает? то ли обновления новые что-то изменили, то ли что-то еще пошло не так. Файл init работает(если сделать ошибку сайт уходит в белый экран и возвращается после корректировки) при этому даже изменение названия обработчика AddEventHandler тоже "видит" как ошибку. При этом упорно игнорирует все что прошено. Т.е. поля при обмене перезатираются, хотя он работал.
|
Михаил Базаров: 05.12.2018 16:25:08
Аналоги функции в новом ядре D7: Bitrix\Main\EventManager::addEventHandler (новый формат) Bitrix\Main\EventManager::addEventHandlerCompatible У меня пока нет времени и негде попробовать. Если кто сделат раньше, будет замечательно если напишите сюда ![]() |
Настёна Лукашевич: 05.12.2018 20:26:41
Все оказалось немного интересней, из всего кода не работает именно CATALOG_QUANTITY, имея и тексты блокируются для изменения, картинки не пробовала. Теперь вообще загадка
![]() |
Настёна Лукашевич: 06.12.2018 10:31:47
Вопрос решился с другой стороны, нужно было проверить узел обмена 1С. Случайно обнаружили что по одним видам обмена он игнорирует и затирает поле доступное количество, по другим не трогает его. По итогу оказалось что корректно работающий узел обмена настроен на ГРУППЫ НОМЕНКЛАТУРЫ, а не корректно работающий на ВИДЫ НОМЕНКЛАТУРЫ. Попытка подменить в корректно работающем узле папку на нужную прошла удачно, т.е. не от папки самой зависит, а именно от настроек узла обмена. Задала вопрос 1С специалисту, который формировал узлы откуда взялась разница в настройках и почему они могут так игнорить, предполагаю что внятного ответа не будет, просто поменяем все на работающий вариант и успокоимся. У нас если что КА8,3, узел обмена встроенный.
|
Павел Ерофеев: 04.01.2019 08:57:44
Добрый день Михаил! Есть такой вопрос, а точнее проблема. Данный способ помог мне решить проблему с описанием, но хотелось бы решить проблему с выгрузкой веса из 1с УТ в битрикс. Дело в том что на стороне битрикса контент редактор, при заполнении описания, характеристик и фотографий, заполняет параметры веса, длины, ширины и высоты (вкладка "торговый каталог") в карточке товара. После обмена с 1с УТ10.3,параметр веса затирается и ставится значение "0" Возможно ли запретить изменения веса после обмена с 1с УТ таким способом?
|
Михаил Базаров: 04.01.2019 11:59:39
|
Павел Ерофеев: 05.01.2019 13:14:40
Код у меня получался такой. Но ничего не работает.
|
Михаил Базаров: 05.01.2019 18:19:58
|
Павел Ерофеев: 06.01.2019 07:29:52
|
Денис Палицын: 11.02.2019 16:32:14
Михаил, здравствуйте.
У нас один товар присутствует в нескольких разделах. При этом в товаре выбран основной раздел: При выгрузке из 1c этот параметр меняется. Пробовал следующее
Пробовал
Также в сети находил инструкцию https://habr.com/ru/sandbox/88796/ и пробовал такую функцию:
Можете подсказать куда копать? |
Денис Палицын: 11.02.2019 16:54:42
|
Top Gun: 21.02.2019 10:14:26
Такой вопрос: если в какой-то момент понадобится сделать выгрузку из 1С, разово, - как быть в таком случае? Сохранить имеющиеся описания/наименования и склеить их с 1С-ными.
|
Михаил Базаров: 21.02.2019 10:23:37
Но, само собой, предварительно сохраниться |
selakonst@ya.ru: 13.11.2019 09:39:13
Здравствуйте, Михаил! Есть следующая проблема - при выгрузке из 1С создается свойство MORE_PHOTO в инфоблоке каталога. Выше. что выше это обсуждалось. Не нашли решение?
У меня в init.php следующий код: 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['CML2_ARTICLE']); unset($arFields['MORE_PHOTO']); unset($arFields['CML2_PICTURES']); unset($arFields['ELEMENT_CODE']); } } Но это не помогает. Пробовал вместо $arFields['MORE_PHOTO']) ставить $arFields['PROPERTY_MORE_PHOTO']). Безрезультатно. Все равно создается и дублирует уже созданное такое же свойство. Из-за этого дополнительные картинки на сайте перестают отобрадаться. Галочка в модуле обмена "Выгружать картинки и файлы" не стоит, ни в товарах, ни в торговых предложениях. Но это поле все время создается. Есть какие-нибудь решения? Сможете что-то подсказать? |
selakonst@ya.ru: 13.11.2019 09:40:56
Еще забыл указать, что версия Битрикс самая новая, но при этом включена поддержка старых событий
|
Михаил Базаров: 13.11.2019 12:30:17
Но как варианты, можно вообще без этой нагрузки обойтись: 1) Простой. Создать под доп. картинки отдельное свойство, которого вообще нет в реквизитах 1С. Например: MORE_PHOTO_2 А штатное, пусть себе болтается пустое (можно спрятать из редактирования элемента- чтоб не раздражало) 2) Сложный: Вынести обработчик импорта в свое пространство имен и доработать- выкинуть обработку картинок (там внимательно, есть еще обработка фалов - не картинок) PS: Последнее время, стараюсь вообще не "перебарщивать" с init.php - если можно обойтись без его раздувания, прикладываю максимум усилий ) |
Николай Сухих: 27.11.2019 09:16:36
Подозреваю что так..
..тоже должно работать |
Николай Сухих: 27.11.2019 09:19:19
Отправил код с ошибкой в названии функции..
p.s. без понятий где редактировать модерируемое сообщение. ![]() |
Николай Сухих: 27.11.2019 09:28:24
Наверно AddEventHandler('iblock', 'OnBeforeIBlockSectionAdd', 'OnBeforeImportIBlockSectionHandler'); будет излишним если хотите запретить именно имя секции
![]() |
jetdan86: 14.01.2020 17:56:25
Михаил добрый день,
Не подскажите, а как сделать, чтобы НДС при обмене не выгружался из 1С. Обработчики на стороне сайта не помогают, все равно налог создается автоматом, если его даже удалить. Поддержка толком ничего сказать не может. |
Михаил Базаров: 15.01.2020 15:41:29
1С ка будет его постоянно выгружать или активировать (если деактивирован). Но, можно на это же событие импорта каталога, повесить этот метод: https://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogvat/update.php Просто переключая, по заверешение импорта, активность ставки в "N" |
jetdan86: 16.01.2020 12:14:53
|
jetdan86: 16.01.2020 12:52:55
|
Виктор Кудрявцев: 03.02.2020 11:10:16
Добрый день!
Подскажите, пожалуйста, а как заблокировать изменение xml_id значения свойства товара? Например, есть свойство "цвет" у которого есть значение "белый" для которого xml_id приходит из 1С в виде 9cd8c8f8-41d9-11ea-8106-0050569b108d Хочется задать мнемонический xml_id - white чтобы красиво в ЧПУ фильтра было. Но это работает до первого полного обмена с 1С который торжественно перезатирает id на 9cd8c8f8-41d9-11ea-8106-0050569b108d |
Марк Соколов: 20.05.2020 09:55:28
Спасибо за заметку, а как работать с каталогом, ну к примеру, при выгрузке добавить обработчик, что мол если товар не доступен, то его деактивировать, или если цена не пришла, его деактивировать, нашел События:OnSuccessCatalogImport1C
Спасибо! |
Анна Тищенко: 26.11.2020 08:30:51
Добрый день. Подскажите, пожалуйста, как решить проблему?
При смене названия категории оставляю URL без изменения, но после новой загрузки из 1С URL категории и всех товаров меняется согласно новому названию и получаю кучу 404. Можно как то отключить автозамену URL, чтобы он оставался такой, как задан изначально? |
Андрей Волков: 07.04.2021 20:12:26
Относительно НДС и других параметров каталога:
|
MERANIK MERANIK: 28.04.2021 19:10:34
на отрез отказывается работать( уже все перетыкал(
в инит добавил, пробовал и из Д7 вариант подставлять - все равно трет и трет |
Данил: 25.06.2021 18:49:06
Чтоб работало новых версиях нужно заменить:
на
|
Михаил Базаров: 25.06.2021 21:20:23
Чуть позже дополню заметку. Если у кого-то уже. есть готовый пример на D7 - буду не против если напишите тут) |
Руслан: 10.11.2021 20:49:05
Добрый день, подскажите пожалуйста как с помощью init.php
деактивировать товары без детальной картинки и без цены при выгрузки из 1с ? |
toorr2p: 17.01.2022 21:04:23
Здравствуйте! А как запретить обновление веса товара?
Вот так не получается
|
Михаил Базаров: 21.01.2022 11:06:31
Где-то, в этой теме уже был ответ, по моему надо использовать CATALOG_WEIGHT |
Guest: 02.02.2022 11:08:23
Здравствуйте, подскажите пожалуйста, мне нужно применить данный запрет только для торговый предложений , а для товаров нужно оставить возможность для перезаписи, как это сделать? заранее спасибо)
|
Михаил Базаров: 02.02.2022 17:54:54
|
Владимир: 13.03.2022 23:08:10
Добрый день!
Возможно ли таким же способом запретить смену типа у свойства при обмене с 1с. Из 1с приходит - строка, а нужно html/text |
Михаил Базаров: 14.03.2022 10:14:22
Думаю, будет проще сделать это на выводе, в шаблоне. Используйте вместо
такой вывод
|
Гость Артур: 31.05.2022 14:47:18
Добрый день, прошу помощи в решении такой проблемы, нужно запретить 1с при обмене, изменять Названия свойств каталога и предложений. У нас несколько номенклатур, и у каждого индивидуальный набор характеристик. Проблема в том что в 1с - характеристики имеют названия Цвет(Платья),Размер(Платья) и тд, соответственно в таком виде и выгружаются на сайт. Я редактирую Цвет(Платья) - в Цвет и тд, но после обмена все возвращается к исходному виду как в 1с. Можно с помощью init.php запретить это делать? Не могу разобраться какие параметры отвечают за эти свойства, чтобы прописать в инит
|
Михаил Базаров: 01.06.2022 10:03:31
Тут конечно сходу не подсказать правильный ответ, без экспериментов на живую не обойтись. Первое что можно попробовать это вот так
Если не сработает- то вариант жестче: Получаем название каждого свойства из инфоблока, сохраняем во временную переменную и снова устанавливаем после перезаписи. Код на вскидку, надо пробовать и дорабатывать, привожу просто в качестве ориентира- куда копать.
|
Максим: 01.09.2022 15:17:05
А не подскажете, как отменить добавление товара? То есть, фактически требуется только обновлять товары, имеющиеся на сайте, не добавляя новых.
пробовал варианты:
в первом случае товары добавляются с одним названием во втором случае товары не добавляются и через некоторое время выгрузка прекращается с ошибкой, указанной в исключении. при этом, выгрузка прекращается не на первом пропущенном товаре (логировал с помощью AddMessage2Log()) |
Alex: 04.11.2022 13:46:10
Подскажите пожалуйста. Делаю выгрузку на сайт, описание падает в анонс. Написал обработку в init.php но он не срабатывает
AddEventHandler("catalog", "OnBeforeProductUpdate", Array("My_Class", "OnBeforeProductUpdate"));
Подскажите как исправить |
Михаил Базаров: 04.11.2022 16:14:32
Это событие устарело, не сработает если отключена поддержка устаревших событий в модуле каталога.
Попробуйте использовать OnAfterIBlockElementUpdate Как-то так, не проверял.
|
Константин: 22.03.2023 09:43:04
Добрый день, Михаил!
Есть задача - не передавать названия складов из 1С, а лучше даже менять при выгрузке В общем нашел такой вариант:
Переделал его как-то под ваш, не знаю правильно или нет
но здесь идет отмена, а как заменить? сможете подсказать |
Константин: 22.03.2023 09:55:27
заменить название склада
|
Михаил Базаров: 22.03.2023 11:03:53
Думаю вот так должно получиться
|
Гость: 05.02.2024 10:10:52
Здравствуйте! а не подскажите как запретить 1с менять расположение разделов. Ну на пример, я убрал с главной страницы пару разделов в под разделы, но 1с после обмена всё выставляет как у него в 1с структурировано. Изменить саму структуру в 1с нельзя по причине "типа менеджерам магазина так сложно искать товары".))))
|
Михаил Базаров: 05.02.2024 11:40:44
Проверить негде, но чисто логически можно
Плюс, вроде бы помню это уже обсуждалось в комментариях. Но не точно ![]() Пролистайте всю ветку https://bazarow.ru/forum/forum1/125-zapretit-izmeneniya-opisaniy-tovarov-pri-vygruzke-iz-1s-ut-na-sayt |
Максим: 08.07.2024 15:56:50
Чтобы не запретить обновлять поле торговых предложений CML2_LINK, unset не подойдет.
У меня работает такой код в init.php (может кому то пригодится):
|
Михаил: 04.01.2025 00:41:19
Здравствуйте, Михаил. Подскажите, как запретить изменение названия торгового предложения при выгрузке из 1с. При передачи стандартным модулем торговое предложение подставляется в скобках (), что очень неудобно для просмотра. Или как-то удалить эти скобки из наименования в файле /bitrix/php_interface/init.php?
|
Михаил Базаров: 04.01.2025 12:21:05
Должно помочь unset($arFields['NAME']) только еще проверять в каком инфоблоке
|
Дармидонт: 16.05.2025 04:39:53
Михаил, здравствуйте!
При интеграции необходимо запретить изменения заголовка в существующих товарах, а новые товары загружались как и в 1С, но уже после загрузки на сайт заголовок не мог поменяться при следующей интеграции с 1С. |
Михаил Базаров: 16.05.2025 11:12:04
Запрет при обновлении элемента
|
Гость: 25.05.2025 12:11:13
Добрый день! При импорте товаров из 1с появляется новый раздел ТОВАРЫ и мои разделы которые создал вручную остаются а вся номенклатура из моих созданных разделов перемещаются именно туда, возможно проставить всем разделам внешние коды (если логически). СПАСБО!
|
Михаил Базаров: 26.05.2025 10:04:21
Попробуйте в настройках обмен апоставить галку "Не выгружать верхний уровень разделов если он единственный"
Название написал по памяти, но примерно так звучит |
Гость: 29.05.2025 14:40:58
Здравствуйте, Михаил!
Проблема заключается в том, что при очередной интерграции с 1С описание html опять слетает на текст, необходимо чтобы оно оставалось в html, |
Гость: 29.05.2025 14:43:16
|
1С-Битрикс на моем Boosty канале
Блог-note: заметки разработчика
Memcached на сайте под управлением битрикс, при использовании Веб Окружения Битрикс
Если вам важна скорость отдачи сайта, а у вашего сервера медленный диск для использования кеша на файлах. Можно кеширова...
Получение токена доступа API Firebase (HTTP v1) с помощью PHP для отправки push-уведомлений.
До июня 2024 года API Firebase использовал постоянный токен доступа, который можно было получить один раз в консоли. Одн...
Дать пользователю возможность быстро отредактировать материал
На одном из разрабатываемых сайтов, пользователи формируют его контент. После регистрации, становится доступен персональ...
Запретить оплату с внутреннего счета, если в корзине есть определенный товар
Задача: пользователи могут оплачивать заказы с бонусного счета (штатный внутренний счет), но если в корзине ...
Удаление недоступных для заказа товаров из корзины
Задача: пользователи магазина могу наполнять корзины, но не доходить до оформления заказа. Такие корзины считаются броше...
Моментальная фильтрация на AJAX в умном фильтре 1С-Битрикс
При штатной установке, интернет-магазина на 1С Битрикс, умный фильтр по товарам, показывает колличество найденных товаро...
Cordova, ввод в input под диктовку. Голосовой поиск в мобильном приложении.
Итак, задачка: реализовать голосовой поиск в мобильном приложении на Cordova. По сути, нам нужно захватить речь с микроф...
Добавление своих полей в почтовые шаблоны Битрикс
Иногда нужно внести свои поля в почтовые шаблоны битрикс. Например: добавить имя и номер телефона заказчика в почтовый ш...
Малая корзина Битрикс, упрощенный шаблон
Шаблон малой корзины битрикс, который можно вывести в боковом разделе шаблона или в шапке интернет-магазина. Код окульту...