Достаточно часто, при разработке сайтов на Битрикс, с интеграцией с 1С Управление Тороговлей, нужно запретить изменения полей при обмен. В частности, детальное описание и картинку товара.
Запретить изменения описаний товаров при выгрузке из 1С УТ на сайт
14.08.2016 06:53:21
Не надо его в инфоблок. Просто включите обмен заказами, предварительно выгрузив контрагентов- как пользователей. На стороне сайта проверьте настройки обмена
И запустите обмен заказами. Все, больше ни чего делать надо, 1С ка сама создаст заказы на сайте и сопоставит с пользователями.
Изменено: |
|
|
30.06.2017 21:08:39
Олег Колчугин, эм, закомментить?
|
|||
|
23.03.2018 10:58:43
Тут сложнее. На одном из проектов, сделал так что бы структура каталогов вообще не выгружалась, а товары обновлялись по XML-ID.
Новые товара попадали в деактивированный раздел "Рассортировать" Но это сложность. Лучше поставте модуль обмена от Битрикс, там можно пересортировывать структуру как угодно, чисто для обмена.
Изменено: |
|
|
29.03.2018 23:10:20
Интересно, а запретить обновлять названия и адреса складов можно таким методом?
|
|
|
23.06.2018 10:15:35
Можно совет? Эта доработка прекрасно работает, фото и описания теперь не удаляются. Но есть мелкая проблема - описания товаров переключаются в режим текст, а у меня они в визуальном режиме сделаны и получается мусор.
Можно ли как-то запретить в битриксе или в в инит добавить строчку переключение с визуального режима редактирования? Да, я нуб.
Изменено: |
|
|
14.07.2018 10:05:54
В поле текстового описания в 1С вставляется любой форматированный кусок текста, и описания из базы остаются нормально отформатированными Например <p> Самый современный игровой компьютер этого достаточно чтобы не слетало на текстовый редактор. |
|||
|
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
Логично
Спасибо - помогло. |
|
|
22.10.2018 09:15:34
|
|||||
|
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
|
|||||
|
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
|
|||||
|
21.02.2019 10:14:26
Такой вопрос: если в какой-то момент понадобится сделать выгрузку из 1С, разово, - как быть в таком случае? Сохранить имеющиеся описания/наименования и склеить их с 1С-ными.
|
|
|
21.02.2019 10:23:37
Но, само собой, предварительно сохраниться |
|||
|
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']). Безрезультатно. Все равно создается и дублирует уже созданное такое же свойство. Из-за этого дополнительные картинки на сайте перестают отобрадаться. Галочка в модуле обмена "Выгружать картинки и файлы" не стоит, ни в товарах, ни в торговых предложениях. Но это поле все время создается. Есть какие-нибудь решения? Сможете что-то подсказать? |
|
|
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'); будет излишним если хотите запретить именно имя секции
|
|
|
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" |
|||
|
16.01.2020 12:14:53
|
|||||
|
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
Относительно НДС и других параметров каталога:
|
|||
|
28.04.2021 19:10:34
на отрез отказывается работать( уже все перетыкал(
в инит добавил, пробовал и из Д7 вариант подставлять - все равно трет и трет |
|
|
25.06.2021 18:49:06
Чтоб работало новых версиях нужно заменить:
на
|
|||||
|
|||||
Блог-note: заметки разработчика
Умный фильтр во всплывающей панели на мобильных.
Шаблон умного фильтра в Битриксе достаточно сложный, с точки зрения верстки и не очень красиво отображается на мобильных...
Создать pdf файл из элемента инфоблока, дать скачать пользователю, поддерживать в актуальном состоянии или отправить на e-mail.
Задача: при каждом посещении статьи, на сайте, нужно создавать pdf файл с ее содержимым и записывать в свойство инфоблок...
Добавление своих полей в почтовые шаблоны Битрикс
Иногда нужно внести свои поля в почтовые шаблоны битрикс. Например: добавить имя и номер телефона заказчика в почтовый ш...
Вывести минимальную и максимальную цену в разделе каталога Битрикс.
Что бы вывести минимальную и максимальную стоимость товаров, из каталога 1С-Битрикс, достаточно получить все товары мето...
Получить все поля раздела, включая пользовательские, в section.php
Если нужно получить какие-то данные о текущем разделе, которых нет в изначальном массиве, можно воспользоваться методом ...
Не дать пользователю купить больше одного товара, в Битрикс
Иногда нужно и такое: Например: на одном из разрабатываемых сайтов, мне нужно было создать всего 4 товара. при этом поку...
Базовая защита "Битрикс виртуальная машина" от DDoS атак.
Данный способ защиты не панацея, и скорее всего не спасет от профессиональной DDoS атаки, когда ваш сервер на CentOS под...
Вывести артикул в печатную форму бланка заказа
Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе.
Повторить заказ на API 1С-Битрикс наполнив корзину из заказа
Задача: заполнить корзину пользователя теми же товарами и количествами которые были в ранее созданном заказе. При этом н...