Всем привет!
Преамбула: стал вопрос о связи инет магазина на ubercart с 1С. Сам реализовывать пока не брался, решил поискать готовые решения.
Нашёл и рассмотрел несколько:
1. Разработчик из Екатеринбурга, имя домена с упоминанием 1С и drupal. В результате общения, через fededback на сайте, выяснилось, что реальная, запрашиваемая стоимость в два раза больше заявленной на его сайте.
И в результате ещё некоторых моментов в общении с разработчиком было принято решения далее с ним не общаться.
2. Решение, найденное на сайте http://armrus.net/blog/sinkhronizatsiya-drupal-s-1s отображало только авторские идеи, не доведённые до публичного практического решения. Со слов автора решение рабочее. Идея понравилась, но испробовать его, к сожалению, не удалось.
3. Решение, давно замеченное на http://cmlservice.com, первый раз о нём прочёл в статье http://www.drupal.ru/node/62395.
Далее об этом решении.
Это связка модулей, позволяющих загружать из 1С в Ubercart в формате CommerceML2 данные о товарах: каталог, описание, фотографии, цены, остатки, характеристики и свойства. Так же позволяет выгружать в файлы order.xml данные о заказах и контрагентах с сайта.
Порадовало адекватное отношение разработчика - быстрый ответ, помощь в режиме скайп-видео и TeamViewer, наличие документации к модулю и обработке 1С: http://cmlservice.com/docs
Но! Первый камень был брошен со стороны 1С. На сайте http://v8.1c.ru/edi/edi_stnd/90/ опубликованы стандарты формата CommerceML2, принятые самой 1С. Но в последних версиях Управления торговлей, без объявления войны, были вероломно нарушены данные "стандарты". Такая же реализация была выполнена в конфигурации Штрих-М: Торговое предприятия, с которой нам пришлось налаживать связь для ubercart. Фактически в 1С поменяли "характеристик товара". Ранее они были в файле import.xml теперь же в offers.xml, хотя версия формата в файле осталась той же - 2.04.
Проект CMLService поддерживал Характеристики, находящиеся в import.xml. В результате обнаруженной нами проблемы было создано issue http://css.mirocow.com/issues/501 которое оперативно было исправлено и закрыто.
Так же в последнее время была добавлена поддержка Ubercart 3, загрузка свойства товаров в поля ноды. Разработчик раскрыл карты на счёт окончания работ над модулем для Commerce - он будет окончен в ближайшее время.
Краткая инструкция по настройке модуля:
Включаем модули: Importer, Import content from CML, Import Offers from CML, Export orders from Ubercart (CommerceML2)
Добавляем атрибуты товара, опции можно не устанавливать, они загружаются из 1С: /admin/store/products/attributes
Идём в настройки модуля Importer: /admin/importer/settings
Настраиваем каталог (в каталоге sites/all/modules/importer/data уже расположен пример, выгруженный из 1С УТ. Права доступа на каталог должны быть 700 (иначе не будут записываться order.xml), поэтому желательно его вынести в корень, или скрыть где-то в недрах files.
Добавляем товару поля типа "Термин таксономии".
Настраиваем привязки свойств к полям (если нужно), копируя <Ид> свойств из файла import.xml:
Настраиваем привязки характеристик к атрибутам, копируя из файла offers.xml значения ключа <Наименование> из <ХарактеристикаТовара>:
Копируем из файла offers.cml значение ключа <Ид> из необходимого ключа <ТипЦены>:
Запуск импорта по адресу: /admin/importer
Сначала загружаем товары, зачем предложения по товарам (цены, остатки).
Идём в /admin/content, смотрим загруженные товары.
Всё.
Файлы заказов order_<номер>.xml создаются в этом же каталоге после осуществления заказа на сайте. Данный файл можно загрузить в 1С, используя обработку с сайта автора.
В тему приглашается сам разработчик, для ответа на вопросы
Вложение | Размер |
---|---|
![]() | 24.88 КБ |
![]() | 35.44 КБ |
![]() | 30.12 КБ |
![]() | 17.51 КБ |
Комментарии
да готов ответить на любые вопросы
Главное что решение работает. Спасибо за статью. единственное что смутило
Что касается моего решения импорта из 1с - на самом деле в 1С не только этот подводный камень, и по факту разработки встречаются совершенно разные реализацию Comerce ML 2.04
И с точки зрения логики - я предпочел использовать не Ubercart 3 а Commerce. Причиной решения стал тот факт что у комерца товар и отображение товара разные сущности. Но вопрос стоял о дальнейшей интеграции модуля выгрузки с уберкатром, а может и с каталогом - который просто построен на таксономии. У меня получилось универсальное решение - которое применялось уже на 5-6 коммерческих проектах(и на Ubercart 3 и на Commerce) а так же недавно интегрировал модуль с интернет магазином Drupal 6 + Ubercart 2. Единственный недостаток - это время - у меня мало свободного времени и руки не добираются почистить модуль от привязок к тому или иному проекту.
Но все же порадую людей кто ищет универсальное решение. На предстоящем баркемпе (http://www.drupal.ru/node/97071) будет доклад о Электронной комерции и Drupal. Скажу сразу что часть доклада будет о интеграции интернет магазинов и 1С а так же мини обзор модуля импорта. Сразу после Баркемпа исходный код модуля будет опубликован в сети.
Версия под Commerce выйдет на следующей неделе.
Адаптация будет под сборку Commerce Kickstart.
Также мы готовим новую универсальную обработку под 1С. Увеличена скорость подготовка XML к выгрузки. И добавлена возможность работы с любыми Конфигурациями 1С.
p/s: Всем кто хочет помочь в развитии проекта.
https://bitbucket.org/mirocow/importer
Ждем пул-реквесты.
Не совсем понял, зачем права 777 на папку data?
1. Прямая угроза безопасности, что для интернет магазина очень актуально и нужно относится внимательно.
2. В корень тем более не нужно выводить эту папку, быстрее найдут.
Если без 777 не обойтись, тогда рекомендую выдать название ей неудобочитаемое, с каким нибудь хешем, чтобы путем перебора не подобрать. Например, как это сделали в Drupal 8 для папки конфигураций.
Да, это я загнул конечно с 777. Вполне 700 хватит. Спасибо за замечание.
Зачем эти костыли, когда в 1С есть веб-сервисы? Все уже придумано за вас.
Видимо вы не очень вчитывались, веб-сервисы есть далеко не во всякой версии 1С. К тому же если надо передавать данные на сайт с клиентской машины с 1С - в подавляющем большинстве случаев не будет доступа извне к этим web-сервисам.
Я согласен, веб-сервис вещь шикарная, сталкивался и прекрасно работало. Но уж очень много ограничений, путем обмена файлами бывает гораздо проще и быстрее организовать регулярный обмен данными.
Напишите пост об этом - мы почитаем.
Лучше всего кидать в корень фтп а в настройках указать относительный путь до папки. К примеру ../1c. И конечно права 777 ставить некчему. Я обычно ставлю 700.
Ну или 770, чтоб дать возможность писать и читать пользователю от которого запущен процесс php-fpm или apache.
Очень интересно как через веб сервисы вы будете передавать файлы 100 мб XML и 2 терабайта картинок.
добавил в трекер
Могу подсказать решение.
1) Через веб-сервис можно передавать файлы. XML сжимается до 3-5%, т.е. на выходе мы получим 3-5 Мб. Отдаете как двоичные данные.
2) Таскать 2 Тб картинок — идиотизм, достаточно поставить Апач/nginx для разрачи этих картинок через веб.
В этом случае можно дергать из 1С урлы сайта, передавая данные в теле POST/PUT запроса.
import.xml - 250мб
Сжимается в 5,44мб
+
offers.xml
И того 10 мб в сжатом виде.
Это планируется применить к обработке. И к скрипту Importer. После того как будет сделана поддержка Drush
Какое это имеет отношение к задаче импорта?
Здравствуйте!
Попробовала модуль и к сожалению ничего не подгружается в Bindings settings.
Вот страница настроек:
![](http://funkyimg.com/u2/3336/033/154794Importer_setting.png)
В чем может быть проблема?
Для того чтоб грузить в поля, они хотяб должны быть. А после уже можно их и настроить. Из скриншота, что вы прислали, выходит что полей просто нет.
Ок, спасибо. Могли бы Вы пояснить, какие именно поля нужно добавлять? Немного не понятно из инструкции.
Поля CCK? Если да, то какие у них должны быть системные названия, что бы модуль их выводил? (может нужно что-то смотреть в файлах выгрузки 1С)
Поля таксономии? (как в инструкции) - это для меня вообще не понятно, что это за поля? Это для терминов таксономии или же какая-то хитрая связка из таксономии+ckk (может модуль NAT) ?
Инструкция написана к drupal 7. А вы точно используете Ubercart 3 и Drupal 7? Смущает CCK, которого в 7 нету. Так же в 7 есть поля типа "Ссылка на термин". Названия роли не играют.
У вас склероз? Напомню, вы спрашивали:
Я ответил, что картинки нужно не передавать на сайт, а раздавать с сервера, где они лежат.
Таким образом отпадает потребность в импорте, кэп.
Пожалуйста не пишите больше ерунды. Для начала разберитесь в вопросе, а только потом предлагайте свое решение.
Смысл реализации в использовании всех возможностей Dupal при выводе картинок. Так как импорт формирует или филд или cck филд в зависимости от версии Drupal. А уж положить картинку на фтп проблем не составляет. А ваш способ больше смахивает на костыль.
Костыль у вас — вы задваиваете данные, в то время как можно пользоваться одним централизованным хранилищем. Получается, что из двух терабайт сделали четыре — глупо и расточительно.
Какие особенности Друпала при выводе картинок вам нужны? Нджинкс умеет ресайзить картинки в полете, например.
Nginx даж перл имеет и что. К чему вы это все пишите?
Ой, а я использую Drupal6 + Ubercart2. А как-же тогда делать настройку модуля под имеющийся арсенал?
Вот тут http://cmlservice.com/docs представлена официальная документация. Если чего то нет, пишите - допишем.
Поскрольте выше, если с памятью проблемы.
Спасибо за Ваше предложение, но к сожалению оно не удовлетворяет требованиям заказчиков и накладывает ограничения на использования возможностей Drupal в дальнейшем.
Если 2 терабайта картинок, то, наверное, все же лучше не гонять их лишний раз на сервер...поперхнуться может.
з.ы. многие разработчики, при таких немаленьких размерах товарного ассортимента, вообще пользуются прямыми запросами от 1с к друпалу для получения данных. Быстрее будет. Хотя по поводу скорости могу сильно ошибаться. Сам сделал импорт с сайта в 1с прямыми запросами (в 1с обработка, тунель через путти), экспорт на сайт еще не делал.
А какого ... тогда разрабы 1С придумали модуль выгрузки на сайт?)))
Второй нюанс - вы уверены что каждый программист 1с осилит все правильно настроить? Не слышали что есть компании которые, категорически, не дадут доступ к своим серверам - чтобы вы там что либо настроили. Вы уверены что сможете объяснить заказчику что из ВНЕ будет доступ к 1С и почему это безопасно? - если вы у вас есть ответы оправдывающие все эти пункты - или вы гений или работаете с одним клиентом и думаете что все остальные такие))))
P.S. 1 правильно написанный и задокументированный модуль для друпала намного легче интегрировать практически на всех сайтах, для которых он написан(в данном случае Drupal 7 + Ubercart 3) а для работы с веб сервисами разных баз надо будет писать обработчики для каждой из них - и то что у клиента админ 1с будет настолько прошарен, что все сделает как надо - очень редкий случай(по опыту говорю) - если гдето ошибся - поправьте.
Дмитрий (Mirocow) красавчег! модуль пока не смотрел, но похвально, что он делится с сообществом![Wink](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/wink.gif)
На самом деле модуль гуд.
Сейчас заканчиваю сайт Drupal 6 + Ubercart 2 + 1C 8.2 УТ 11
Можете не верить, но подружили эти злые штуки вместе, правда с допилами (+ загрузка информации в доп.поля - CCK), но к сожалению до автомата нужно правильно допилить модуль (Автор обещал решить:)) ).
В остальном вкратце: данные выгружаются из 1С (категории, товары, цены, остатки) и загружаются в 1с новые заказы. На сайт всё грузится нажатием одной кнопки, но для нашего проекта нужен именно автомат (думаю скоро сделаем).
З.Ы. Как доделаем - постараюсь написать по свежей памяти процесс интеграции.
Планируется 2 автомата:
1) Drush - консольное выполнение
2) Cron - Выполнение чeрез wget
Mirocow, а drush внутри крона?![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
да конечно
Итак, промчавшись с связкой drupal 6 + ubercart 2 + 1c удалось выявить проблемы:
1. Importer не видит cck полей. CCK поля есть в node_product, но в Bindings settings всегда пусто
С чем может быть связанно?
2. Не цепляются картинки. Настроек кроме move/copy в модуле нет, а как цеплять ума не приложу.
3. Не цепляются артикулы.
Прошу прощения, если где-то не увидела, но очень жду помощи, что бы все таки полноценно попробовать работу модуля importer.
Спасибо!
Возможно, многих заинтересует наш былой Друмод2 все версии в том числе тестовые есть здесь
поля вяжутся определенного типа, возможна причина в этом
проверьте права на папку
проверьте их наличие в import.xml
И да importer больше развиваться не будет. На смену пришел "Import KIT"
Данный проект закрыт в пользу Import KIT
То-есть не будет поддержки для Drupal 6 ?
Будет, но обновления будут не так часто, как для D7
Добрый вечер.
Хочу уточнить, решение для синхронизации Drupal Commerce и 1С уже готово ?
да
Если кому нужно: Синхронизация интернет-магазина Drupal 6+Ubercart 2+Importer с 1С на автомате
Чего я до оплаты не прочитал этих строк. Случилось мне заказать обработку для 1с у этого "разработчика" из Екатеринбурга имя которому Ефимов Сергей Николаевич. По цене он меня не обманул, хотя, видимо позднее жалел об этом (видно из переписке в скайпе, что по ссылке ниже). Когда до меня начало доходить, что он не только понимает в друпале меньше меня, но и ещё умеет его поломать своей "интеграцией", я отказался от его услуг и немного был удивлён, когда он не захотел вернуть деньги уплаченные за невыполненную работу.
Со стороны drupal этот умелец не производит ниодной операции, т.к. пишет 1С-овской обработкой непосредственно в sql БД сайта.
Подробнее см. тут http://www.drupal.ru/node/89343#comment-612705
Здравствуйте, нигде не могу найти дискуссию по работе 3х модулей CML Exchange, CML Migrate и CML Api для Друпал 8.
Пришлось додумывать самому. Обратился к разработчикам модуля за помощью, но ценник слишком большой.
Решил сам. Для тестирования интеграции с 1с закинул файлы import.xml, offers.xml, и папку import_files в одну директорию sites/default/files/cml
Создал cml entity и прикрепил к нему оба файл xml.
Запустил миграцию cml и вижу что продукты и термины таксономии загрузились, а вот картинки никак.
Создал все необходимые поля по очень скудной инструкции в ютюбе. Но все еще не могу никак включить картинки. Им мешает какая-то мелочь. Но никак не могу понять какая.
Уважаемый Mirocow. Знаю вы работаете над этим модулем. Прошу помогите разобраться с вашим детищем.