Всем привет!
Преамбула: стал вопрос о связи инет магазина на 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С, используя обработку с сайта автора.
В тему приглашается сам разработчик, для ответа на вопросы
Вложение | Размер |
---|---|
importer1.jpg | 24.88 КБ |
importer2.jpg | 35.44 КБ |
importer3.jpg | 30.12 КБ |
importer4.jpg | 17.51 КБ |
Комментарии
да готов ответить на любые вопросы
Главное что решение работает. Спасибо за статью. единственное что смутило
Что касается моего решения импорта из 1с - на самом деле в 1С не только этот подводный камень, и по факту разработки встречаются совершенно разные реализацию Comerce ML 2.04 респект разработчикам 1с. Я на своем первом проекте - где была необхадима реализация импорта из 1с решил использовать вышеуказанный метод. Но получив от клиента файлы выгруженные из 1С понял что головной боли будет больше чем ожидается. Тут же второй проект с идентичным требованием.
И с точки зрения логики - я предпочел использовать не 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.
Вот страница настроек:
В чем может быть проблема?
Для того чтоб грузить в поля, они хотяб должны быть. А после уже можно их и настроить. Из скриншота, что вы прислали, выходит что полей просто нет.
Ок, спасибо. Могли бы Вы пояснить, какие именно поля нужно добавлять? Немного не понятно из инструкции.
Поля 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) красавчег! модуль пока не смотрел, но похвально, что он делится с сообществом
На самом деле модуль гуд.
Сейчас заканчиваю сайт Drupal 6 + Ubercart 2 + 1C 8.2 УТ 11
Можете не верить, но подружили эти злые штуки вместе, правда с допилами (+ загрузка информации в доп.поля - CCK), но к сожалению до автомата нужно правильно допилить модуль (Автор обещал решить:)) ).
В остальном вкратце: данные выгружаются из 1С (категории, товары, цены, остатки) и загружаются в 1с новые заказы. На сайт всё грузится нажатием одной кнопки, но для нашего проекта нужен именно автомат (думаю скоро сделаем).
З.Ы. Как доделаем - постараюсь написать по свежей памяти процесс интеграции.
Планируется 2 автомата:
1) Drush - консольное выполнение
2) Cron - Выполнение чeрез wget
Mirocow, а drush внутри крона?
да конечно
Итак, промчавшись с связкой 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. Знаю вы работаете над этим модулем. Прошу помогите разобраться с вашим детищем.