Группа посвященная интеграции продуктов 1С-Битрикс с другими системами.
Модули в Маркетплейсе для интеграции:
http://marketplace.1c-bitrix.ru/solutions/?category=61&PAYMENT_SHOW=ALL
Создана:
15.10.2014 12:13:15
Участников:
67
Тип группы:
Это открытая группа. В неё может вступить любой желающий.
Это видимая группа. Ее наличие видно всем пользователям.
Задача интеграции магазинов на Битрикс с несколькими информационными базами 1С Предприятие - возникает достаточно часто. Например, когда необходимо настроить работу 2х и больше интернет-магазинов на одном ядре Битрикс или в случае, когда каталог магазина должен наполняться товарами от разных поставщиков. На данную тему написано не мало статей, и я не буду подробно останавливаться на общей технологии настройки обмена в данном случае. Напомню, как делают:
Как вариант: создают несколько копий файлов http://<сайт>/bitrix/admin/1c_import.php и http://<сайт>/bitrix/admin/1c_exchange.php , а затем в настройках со стороны 1с прописывают для каждой базы свой путь.
А дальше и возникают некоторые проблемы, перед которыми пасуют многие разработчики. Дело в том, что если просто сделать несколько копий скриптов обмена, каждая база сможет отдавать свои товары на сайт, но нельзя будет запустить обмен данными из нескольких баз одновременно. Часто эту проблему можно решить, настроив расписание запуска обмена на стороне 1С. Но вот однажды я столкнулась с ситуаций, когда клиенту было необходимо загружать товары из 9ти информационных баз, каталог товаров в каждой базе был обширным, и клиенту хотелось, чтобы данные об остатках товаров на складах передавались на сайт как можно чаще. В этой ситуации было не обойтись без одновременного импорта товаров из нескольких информационных баз.
И тогда я подумала: "Не может быть, чтобы для Битикс было невозможно это сделать. Разработчики должны были предусмотреть возможность для этого". Я скопировала компонент catalog.import.1c в свою область видимости и занялась его кастомизацией.
Первое, что бросилось мне в глаза в исходном коде компонента – это вот это строка №374
$rs = $DB->Query("sel ect count(*) C fr om b_xml_tree where PARENT_ID = ".intval($NS["XML_ELEMENTS_PARENT"]));
Здесь явно прописано имя временной таблицы, куда в процессе импорта загружается xml файл, пришедший от 1с. Естественно, если несколько баз одновременно начнут писать свои данные в одну и ту же таблицу – импорт не пройдет корректно. Поэтому я добавила к своему кастомизированному компоненту новый параметр IB_ID – уникальный идентификатор, чтобы иметь возможность разнести процесс импорта из разных баз по разным временным таблицам, и переписала эту строку следующим образом:
$rs = $DB->Query("select count(*) C fr om b_xml_tree”. $arParams["IB_ID"].” wh ere PARENT_ID = ".intval($NS["XML_ELEMENTS_PARENT"]));
Но это еще не все: имя таблицы b_xml_tree прописано в качестве параметра по-умолчанию в конструкторах вот этих двух классов: CIBlockCMLImport и CIBlockXMLFile
Но при создании объектов этих классов в компоненте можно передать им другое имя таблицы. В стандартном компоненте написано так: (не в одном месте)
После этого я подключила свой кастомизированный компонент в скрипте импорта вместо стандартного. 1С программист из IT отдела клиента придумал, как сделать мой метод красивее: вместо того чтобы создавать несколько файлов импорта, я создала один, а параметр IB_ID 1C Программист передал в GET – запросе, кастомизировав 1С обработку на своей стороне.
Но если нет возможности передать этот параметр из 1С, можно просто создать несколько файлов импорта, в каждом из них указать при подключении компонента импорта любой придуманный IB_ID – главное, чтобы для каждого файла, он был уникальным, и указать в каждой информационной базе путь к своему скрипту импорта. После этого импорт каталога из 1С Предприятия в Битрикс может идти одновременно из нескольких информационных баз.
Данное решение было внедрено мной в ЗАО «ИСТОК» http://www.istoksochi.ru/ Для этого же интернет-магазина, мною был кастомизирован и компонент экспорта заказов из Битрикса в 1С для того, чтобы каждая база могла забирать с сайта свои заказы. Возможно, я напишу об этом подробнее в одном из будущих постов.
Практически все наши проекты — магазины с интеграцией. Решение проблем с интеграцией занимает значительную часть нашего времени на этапе внедрения и при технической поддержке.
Мы собрали наши наработки в один мощный инструмент «Продвинутый обмен с 1С» для решения различных задач:
ускорение обмена
отладка
отказоусточивость.
некоторых других.
Ускорение. Выгрузка только цен и остатков
Клиентам надо очень часто обновлять остатки и цены. Описания товаров выгружать надо редко.
Выгрузка изменений не всегда помогает. Иногда надо делать полную.
На одном проекте на большой базе полная выгрузка шла 32 часа. Пока она шла, остатки были неактуальны. При этом остатки и цены записывались на последнем шаге за 6 минут.
Как ускорить обмен?
Включаем в модуле «Продвинутый обмен с 1С» флажок «Загружать только цены и остатки (файл с описанием товаров будет пропущен)».
В 1С картинки и файлы можно отключить.
Делаем обмен.
Получаем полную выгрузку цен и остатков за 30 минут: 20 минут 1С формирует файлы + 4 минуты передача данных + 6 минут запись на сайте.
В документации описан еще один пример. Можно настроить не один обмен, а два. Первый — полный, второй — только цены и остатки.
Ускорение. Быстрая запись свойств товаров
Все-таки полную выгрузку товаров надо хоть иногда делать. 32 часа — очень много. Все эти 32 часа остатки и цены неактуальны.
Включаем опцию «Быстрая запись свойств товаров».
Получили полную выгрузку за 16 часов вместо 32. Это приемлимо. Значит за ночь можно все обновить.
Опция записывает только используемые свойства. Если в инфоблоке всего 1000 свойств, а у товара только 20, значит остальные 980 пустых проверяются и пишутся вхолостую.
Вот так двумя галочками можно решить бизнес-задачи с медленным обменом. Дальше надо думать, как оптимизировать сервер или оптимизировать код в 1С.
Отладка. Живой лог
Клиент хочет видеть, как идет обмен, и, как долго еще ждать. Особенно актуально для Управления торговлей 11, которая не показывает, что происходит.
Живой лог в реальном времени показывает, что сейчас происходит:
Страничка обновляется мгновенно с помощью модуля Push and Pull. Можно «откинуться на спинку кресла» и смотреть, как идет обмен, с 1С.
Модуль Push and Pull есть в Малом Бизнесе.
Отладка. Лог-файл
Программистам нужно больше информации. Например, о том, сколько времени записывается товар, и, на каком товаре произошел сбой.
Для этого есть инструмент — лог-файл. Включите флажок «Записывать все шаги в лог-файл».
В лог-файле будет то, что 1С собирается записать на сайт и время шагов.
Отказоустойчивость:
Отказоустойчивость — не менее важная характеристика обмена, чем скорость.
Для заказчика очень неприятна ситуация, когда обмен шел несколько часов и из-за чего-то прервался. Для разработчика самая страшная ситуация, когда такой заказчик звонит и требует разобраться почему прервался обмен. Вина может быть не в разработчике, а в сервере, но заказчик все-равно будет звонить разработчику
Мы уменьшаем нагрузку на сервер, отключаем лишнее и выставляем правильные параметры для Битрикса и PHP.
1. Мы сохраняем время последнего обмена, чтобы знать когда обновились цены в каталоге.
2. Иногда надо корректно прервать обмен или полностью запретить для переноса сайта.
Заключение:
Настройка обмена и техподдержка — задача нетривиальная. Не на всех сайтах можно запросто перезапустить полный обмен.
Многие задачи могут быть решены на стороне сайта без переписывания типового обмена. Но без качественного инструмента заниматься решением проблем с интеграцией очень тяжело.
Следует всегда закладывать в бюджет проекта стоимость интеграции, поддержку интеграции и инструменты.
Коллеги, пожалуйста, если вы примените модуль, напишите какие цифры по ускорению обмена вы получили при включении модуля на своем проекте. И сколько всего свойств в инфоблоке у вас.
Чтобы точно проверить быструю запись свойств, нужно отключить в настройках магазина в интеграции с 1С опцию Использовать контрольные суммы. Если опция будет включена, то при втором запуске будет очень быстро. Потому что товар вообще не будет перезаписан.
Еще наш модуль пишет время записи в лог при записи элемента. Можно быстро тестировать с одним товаром и смотреть лог-файл.
Мы решили повысить цену на наш главный модуль «Продвинутый обмен с 1С» с 10 января до 7400 рублей. Сейчас действует скидка 20%, и модуль можно купить за 5920. Примерно по прежней цене.
Хорошая новость: функционал модуля стал шире и подарков теперь больше. Общая скидка 75%.
Тема стара, как обмен между 1С Предприятие и 1С-Битрикс, но продолжает будоражить умы. Расскажу по шагам, как это делаю я. Мы провели выгрузку каталога из 1С и видим, что наряду со старым товарным инфоблоком в админке сайта создался новый. Что делать?
1) Идем в настройки – Настройки модулей – Информационные блоки и включаем галочку «Показывать код загрузки из внешних источников»
2) Далее идем в Магазин – Интеграция с 1С На самой первой вкладке если тип инфоблока не выбран, выбираем тип инфоблока catalog
3) Удаляем новый инфоблок и новый тип инфоблока и запускаем импорт из 1С по-новой.
4) Теперь мы видим, что инфоблок создался уже в нужном нам типе инфоблоков. Идем дальше Открываем новый инфоблок на редактирование, копируем его внешний код Открываем в соседней вкладке старый инфоблок на редактирование – вставляем туда внешний код
5) Открываем вкладку Свойства обоих инфоблоков в соседних вкладках Аккуратно ищем в новом инфоблоке свойства, которые есть в старом – по коду, и если такие совпадающие свойства есть – копируем для них внешний код из нового блока в старый. А если они разных типов – то в простом варианте просто удаляем такое свойство из старого инфоблока. В сложном – там надо думать о кастомизации импорта.
Осталось разобраться с ценой. Если это малый бизнес, то открываем файл обмена сохраненный в логах, ищем там внешний код цены и вписываем его во внешний код единственной цены в битриксе.
6) Снова удаляем новый инфоблок, запускаем импорт заново – наслаждаемся попаданием импорта «туда»
7) После этого в настройках каталога в публичной части сайта нужно вывести нужные свойства, перевыбрать тип цены, настроить, какие свойства должны отображаться в умном фильтре а какие – на детальной странице.
P/S: в редких случаях, если не применяются типовые решения из маркетплейс или если публичка сайта еще не разработана и инфоблок товаров - по сути пустой и вам все равно, какое свойство, куда попадает, можно направить выгрузку сразу в нужный инфоблок (и если из 1С импортируется только 1 каталог в 1 инфоблок) (для реальных и серьезных проектов я это делать не рекомендую, но все же):
В поле внешнего кода нужного инфоблока пишем FUTURE-1C-CATALOG и при первой же выгрузке из 1С все товары попадут в него. В ИБ товарных предложений в поле внешнего кода пишем FUTURE-1C-OFFERS и товарные предложения - пойдут в него.
Журавский Сергей написал: Подскажите где смотреть этот файл логов?
Путь к файлу логов Вы задаете сами при создании узла обмена с сайтами (это в 1с). Там в папке reports формируются файлы логов обмена, ищете там файл, содержащий в названии слово Exchange_, смотрите дату обмена, это и есть искомый файл. Открываете его и ищете слово prices. После этого слова идет внешний код цены.
Журавский Сергей написал: второй вопрос внешний код цены указывать тут http://название сайта/bitrix/admin/cat_group_admin.php?lang=ru
Добрый день. делаю всё по инструкции, но в итоге экспорт идёт в новый каталог, причём создаётся внешний код с префиксом "shop-" к внешнему коду старого каталога. подскажите, в чём может быть дело? внешний код каталога куда надо выгружать товар: 0b466bfe-d5a1-4416-8fd1-2ca96912fb63 внешний код каталога куда выгружается товар: shop-0b466bfe-d5a1-4416-8fd1-2ca96912fb63 если во внешний код каталога выгрузки записать "shop-0b466bfe-d5a1-4416-8fd1-2ca96912fb63", то создастся каталог с внешним кодом "shop-shop-0b466bfe-d5a1-4416-8fd1-2ca96912fb63"
Отлично! Нашёл что искал. Только было бы хорошо предупредить, что структура каталога если не настроена в 1С (в моём случае это МойСклад) как и на сайте и не связана внешним кодом - слетает (со всеми настройками).
К нам регулярно обращаются клиенты, у которых что-то не в порядке с количеством товаров на сайте или с ценами.
Стандартные вопросы:
1. Нет обмена с 1С. Количество товара записано только на сайте. Клиент заказывает товар, а товара на физическом складе нет. Что случилось? Кто-то украл со склада товар?
2. Есть обмен с 1С. Количество на сайте и в 1С отличается. Клиент как-то сумел заказать товар, которого нет в 1С. Как так? Обмен не работает?
3. Есть обмен с 1С, и куда-то пропало описание товара, которое написали вручную. Что случилось? Может обмен всё стёр?
Этот модуль должен у вас стоять до того, как возникнет вопрос «Что не так?». Если проблема уже возникла, то восстановить историю без модуля будет крайне трудно.
Описание модуля
Мы записываем каждое действие по добавлению, изменению удалению в товарах.
Мы сильно заморочились, чтобы использование модуля было очень простым для неопытных пользователей.
Модуль следит за полями:
наименование
активность
символьный код
краткое описание
подробное описание
доступное количество
количество в резерве
НДС
закупочная цена
цены
остатки по складам.
Модуль записывает старые и новые значения.
Модуль записывает только реальные изменения товара. Если ничего не меняется, модуль ничего не записывает.
При удалении чего-нибудь модуль сохраняет всё, что было перед удалением.
Модуль записывает кем и когда были произведены изменения.
Модуль записывает адрес страницы, где было изменение.
Модуль записывает порядок вызовов функций для разработчиков, чтобы можно было понять какой именно код привёл к изменению товара.
Колонок у таблицы журнала много, но можно скрывать ненужные.
Журнал содержит удобный фильтр по товару и по пользователю.
Модуль позволяет гибко настроить, что мы хотим записывать в журнал.
Модуль позволяет из карточки товара быстро перейти к просмотру изменений.
Опция для вывода «Журнала изменений товаров» на страницы редактирования товара:
Модуль позволяет из списка товаров быстро перейти к просмотру изменений.
Модуль позволяет следить за сроком и размером хранимых изменений.
Можно дать права контент-менеджерам и администраторам магазина смотреть журнал.
Можно использовать «Журнал изменений товаров» не только для товаров, но и для простых инфоблоков.
Использование
«Журнал изменений товаров» можно применять не только для торговых каталогов, но и для простых инфоблоков. В этом случае модуль будет сохранять изменения полей:
наименование
активность
символьный код
краткое описание
подробное описание
Мы сознательно сделали не все поля, а только самые важные.
Мы рекомендуем использовать модуль на сайтах, где есть интеграция с 1С, и особенно, где нет интеграции, и данные заполняются вручную.
«Журнал изменений товаров» позволит восстановить данные или проследить изменения, если что-то понадобится.
Стоимость
Демо-версия полностью функциональная, срок триал-периода 30 дней.
Заголовок маркетинговый, но так реально есть. Некоторые клиенты никак не могут сопоставить реальное количество на складе с тем, что написано в поле Доступное количество.
Битрикс не создает по каждому приходу, расходу и резерву отдельный документ, как 1С. Поэтому невозможно понять: ошибка это или кто-то ворует.
Доступное количество может быть легко исправлено вручную или выгружено из Excel.
Разрешить контент-менеджеру менять привязки товаров к разделам:
Укажите нужные инфоблоки. В них можно создавать свои разделы и переносить товары туда.
Закрытые разделы — разделы, которые нужно деактивировать вместе с содержимым.
Пропущенные разделы — ненужные верхние разделы
Модуль до 1 ноября 2016 года назывался «Закрытые и пропущенные разделы из 1С». Мы его переименовали в «Разные структуры разделов на сайте и в 1С». Так лучше.
Демо-версия полностью функциональная.
Срок демо-периода 30 дней.
Этот модуль (и ещё много других) вы можете получить от нас в подарок при покупке модуля «Продвинутый обмен с 1С».
UPD 07.12.2016, версия 2.1.0, новые опции: - Запретить обмену менять названия у выгруженных разделов - Запретить обмену менять символьный код у выгруженных разделов
А насчет альтернативного дерева разделов в 1С, мы, конечно, знаем.
Там тоже всё не так хорошо.
1. Надо ставить дополнение в 1С и изменять конфигурацию. В большинстве случаев, если можно обойтись без дополнения, лучше без него. Легче будет обновлять 1С и надежнее работает обмен.
2 Альтернативное дерево разделов почему-то - не отдельная настройка. Это часть настроек обмена. Трудно настроить несколько выгрузок с одинаковой структурой разделов для разных сайтов.
3. Бывают случаи, когда клиент просит пропускать один какой-то верхний раздел, а другие выгружать.
И еще:
В моем складе нет настроек для альтернативных структур разделов.
Самая крутая инновация, я считаю, - это закрытые разделы.
Помечаете раздел закрытым, и все содержимое становится неактивным. Что бы вы ни делали: выгрузки из excel, выгрузки из 1С вручную. Товар никак не станет Активным.
Очень удобно делать разделы "Архив" или "Устаревшее".
Некоторые клиенты с Моим складом сходят с ума, когда получают на сайт служебный раздел "Товары с сайта". Его тоже надо помечать закрытым.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».