0 Пользователей и 1 Гость просматривают эту тему.
  • 691 Ответов
  • 138151 Просмотров
*

homutke

  • Захожу иногда
  • 71
  • 4 / 0
Написан скрипт позволяющий обмениваться с VirtueMart и 1с посредством протокола CommerceML.
Скрипт открытый и находится на тестировании, желающие могут взять его на http://infostart.ru/community/groups/622/.
Реализован полный цикл обмена, но не до тестирован, желающие помочь могут оставлять свои запросы.

Требует наличия php5,simplexml.

« Последнее редактирование: 18.05.2010, 12:15:08 от homutke »
*

haword

  • Захожу иногда
  • 124
  • 25 / 0
Re: CommerceML выгрузка/загрузка в VirtueMart
« Ответ #1 : 11.05.2010, 23:48:59 »
только как скачать вот загадка  !
*

homutke

  • Захожу иногда
  • 71
  • 4 / 0
Re: CommerceML выгрузка/загрузка в VirtueMart
« Ответ #2 : 12.05.2010, 09:24:16 »
Зарегистрироваться  и добавить себя в группу CommerceML
*

haword

  • Захожу иногда
  • 124
  • 25 / 0
Re: CommerceML выгрузка/загрузка в VirtueMart
« Ответ #4 : 12.05.2010, 13:27:39 »
сделал так и не вижу где можно скачать :(
*

homutke

  • Захожу иногда
  • 71
  • 4 / 0
*

haword

  • Захожу иногда
  • 124
  • 25 / 0
Re: CommerceML выгрузка/загрузка в VirtueMart
« Ответ #6 : 12.05.2010, 22:19:14 »
ага спасибо, в выходные протестирую потом отпишусь что да как, по коду заметил что если будет слабый хостинг и загрузка товара будет идти медленно то загрузка будет вываливаться на середине, для этого в битриксе в ответку шлется сообщение и 1с заново перезапускает загрузку а в сессионных переменных передает от куда продолжать. Было бы неплохо это прикрутить. Будет время повожусь на выходных.
*

frag79

  • Давно я тут
  • 611
  • 61 / 0
Re: CommerceML выгрузка/загрузка в VirtueMart
« Ответ #8 : 13.05.2010, 08:29:55 »
маленькая инфа из группы в инфостарте
1. В корень сайта кладем connect.php
2. Создаем в корне сайта директорию uploads с правами 777
3. Идем в 1С вызываем "обмен данными с web-сайтом" и все настраиваем как в http://v8.1c.ru/edi/edi_app/130/

Чет у меня не грузит ничего.
*

homutke

  • Захожу иногда
  • 71
  • 4 / 0
Re: CommerceML выгрузка/загрузка в VirtueMart
« Ответ #9 : 13.05.2010, 11:27:33 »
маленькая инфа из группы в инфостарте
1. В корень сайта кладем connect.php
2. Создаем в корне сайта директорию uploads с правами 777
3. Идем в 1С вызываем "обмен данными с web-сайтом" и все настраиваем как в http://v8.1c.ru/edi/edi_app/130/

Чет у меня не грузит ничего.

проверка
маленькая инфа из группы в инфостарте
1. В корень сайта кладем connect.php
2. Создаем в корне сайта директорию uploads с правами 777
3. Идем в 1С вызываем "обмен данными с web-сайтом" и все настраиваем как в http://v8.1c.ru/edi/edi_app/130/

Чет у меня не грузит ничего.


Подробнее бы, соединение с сайтом проходит?
*

frag79

  • Давно я тут
  • 611
  • 61 / 0
Re: CommerceML выгрузка/загрузка в VirtueMart
« Ответ #10 : 13.05.2010, 12:25:36 »
Подробнее бы, соединение с сайтом проходит?
Ну что делал:
1С:Предприятие 8.1 (8.1.9.57), "Управление торговлей", редакция 10.3 (10.3.7.8 ) демо данные, Joomla 1.5.15, VirtueMart 1.1.13 Stable
1. В корень сайта кладем connect.php
Положил, заменив define('JPATH_BASE', dirname(__FILE__). '/joomla/' ) на define('JPATH_BASE', dirname(__FILE__));
2. uploads с правами 777 создал.
3. Обмен данными с web-сайтом на первом шаге:
пробовал http://мой_сайт.ru/connect.php, http://мой_сайт.ru, пас админа Joomla, пас на БД, в любых вариантах "Не удалось установить соединение с сервером. Проверьте имя пользователя и пароль." Пароли все верные.

Пробовал на хосте (hc.ru) php 5.* и на Денвере

при http://fragdemo.kfspbuwc.ru/connect.php?type=catalog&mode=checkauth выдает ошибку
Код
п»ї
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /www/kfspbuwc/users/kfspbuwc-fragdem/www/htdocs/connect.php:1) in /www/kfspbuwc/users/kfspbuwc-fragdem/www/htdocs/libraries/joomla/session/session.php on line 423

Warning: Cannot modify header information - headers already sent by (output started at /www/kfspbuwc/users/kfspbuwc-fragdem/www/htdocs/connect.php:1) in /www/kfspbuwc/users/kfspbuwc-fragdem/www/htdocs/libraries/joomla/session/session.php on line 426
success
« Последнее редактирование: 13.05.2010, 12:29:33 от frag79 »
*

haword

  • Захожу иногда
  • 124
  • 25 / 0
Re: CommerceML выгрузка/загрузка в VirtueMart
« Ответ #11 : 13.05.2010, 13:43:06 »
поставь  // (две косые линии) перед строчками

ini_set('display_errors', '1');
error_reporting(E_ALL);

в начале файла connect.php
« Последнее редактирование: 13.05.2010, 13:52:34 от haword »
*

frag79

  • Давно я тут
  • 611
  • 61 / 0
Re: CommerceML выгрузка/загрузка в VirtueMart
« Ответ #12 : 13.05.2010, 13:59:27 »
на панели хостера небыло запретить вывод ошибок.
в .htaccess добавил php_value error_reporting 0 соеденился, потестирую отпишусь.
haword +1
*

frag79

  • Давно я тут
  • 611
  • 61 / 0
Re: CommerceML выгрузка/загрузка в VirtueMart
« Ответ #13 : 13.05.2010, 18:47:13 »
Кое какие результаты появились ^-^
Загрузка товаров прошла почти на ура, товары, категории, цены, изображения прописались в БД но не распаковались в нужный каталог, перенес ручками работает, толь при выгрузке изображений они заносятся в product_full_image, лучше в product_thumb_image, а еще лучше и туда и туда, а то большая картинка есть, маленькой нет :).

а вот с сервака пока чет нет связи, 1С выдает
Код
Выгружено товаров: 170
Выгружено картинок: 35
Выгрузка товаров успешно завершена
Не удалось прочитать данные, загруженные с сервера.
Обмен не выполнен
Не выгружен ни один заказ.
Обмен заказами завершен с ошибками!

После заказа на сайте в 1С
Код
Ошибка в значении узла <Документ>.<Валюта> документа CML (RUB).
Обмен не выполнен
Не удалось обработать значение элемента (Документ.Валюта) = (RUB).
Не удалось разобрать данные, загруженные с сервера.
Обмен не выполнен
Не выгружен ни один заказ.
Обмен заказами завершен с ошибками!
« Последнее редактирование: 13.05.2010, 19:04:55 от frag79 »
*

homutke

  • Захожу иногда
  • 71
  • 4 / 0
Re: CommerceML выгрузка/загрузка в VirtueMart
« Ответ #14 : 14.05.2010, 16:03:51 »
Сделал новую версию, поправил ошибки. Добавил новые.

Директория UPLOADS теперь не нужна, файлы сразу разворачиваюся в директории
components/com_virtuemart/shop_image/product/

Добавил help вызывается: connect.php?mode=help



http://narod.ru/disk/20737523000/connect.zip.html
*

daddy7

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
При импорте ругается на эту строку

Код
$clear			=	$xml->ПакетПредложений->attributes()->СодержитТолькоИзменения;

Код
PHP Warning:  main() [<a href='function.main'>function.main</a>]: Node no longer exists in C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\connect.php on line 893

*

homutke

  • Захожу иногда
  • 71
  • 4 / 0
Можно
При импорте ругается на эту строку

Код
$clear			=	$xml->ПакетПредложений->attributes()->СодержитТолькоИзменения;

Код
PHP Warning:  main() [<a href='function.main'>function.main</a>]: Node no longer exists in C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\connect.php on line 893




Можешь закоментировать строку, она выполнят считывание булевой переменной из offers.xml для очистки
таблицы product_price.

Заодно посмотри на строчку

Цитировать
<?xml version="1.0" encoding="UTF-8"?>
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="2010-04-25T12:09:29">
   <ПакетПредложений СодержитТолькоИзменения="false">

в ней присутствуют какие либо не стандартные символы.

Если возможно вышли свои import.xml и offers.xml я их у себя проверю.
*

daddy7

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Файлы лежат тут: http://narod.ru/disk/20903793000/1cbitrix.rar.html

Дело в том, что я использую не штатную обработку обмена, которая входит в состав типовой конфигурации, а модуль интеграции от БИТРИКС, который обладает более богатым функционалом http://1c.1c-bitrix.ru/ecommerce/download.php
*

homutke

  • Захожу иногда
  • 71
  • 4 / 0
Файлы лежат тут: http://narod.ru/disk/20903793000/1cbitrix.rar.html

Дело в том, что я использую не штатную обработку обмена, которая входит в состав типовой конфигурации, а модуль интеграции от БИТРИКС, который обладает более богатым функционалом http://1c.1c-bitrix.ru/ecommerce/download.php

Втянуло у меня нормально.

Насчет использование доработок битрикса тут надо думать, они очень много под себя изменили, сможет ли VirtueMart по функционалу дотянуть до битрикса.

*

Cybervizor

  • Захожу иногда
  • 111
  • 8 / 0
Столкнулся с двумя багами:
1. каждый раз при выгрузке товаров полностью обнуляется каталог товаров на сайте.
2. Импортированные товары видны в админке, но не видны на сайте.
*

homutke

  • Захожу иногда
  • 71
  • 4 / 0
Столкнулся с двумя багами:
1. каждый раз при выгрузке товаров полностью обнуляется каталог товаров на сайте.
2. Импортированные товары видны в админке, но не видны на сайте.

Если в 1С выбрана опция полная выгрузка то наверно это верно.
Насчет 2 не могу ни чего сказать
*

daddy7

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Если в 1С выбрана опция полная выгрузка то наверно это верно.
На самом деле надо как-то это обойти. Если использовать http://1c.1c-bitrix.ru/ecommerce/download.php, то там есть настройка какие группы/товары в какой раздел выгружать. При большом объеме номенклатуры необходимо разбивать экспорт на части, иначе никакой сервант не справится. Опять же если ставить галку "Только измененные товары", то система не отслеживает остаток товара. В этом случае выгружаются только измененные товары, изменение остатков не отслеживается.
*

Cybervizor

  • Захожу иногда
  • 111
  • 8 / 0
Только что обнаружил: при выгрузке товара устанавливается первый производитель из списка,  после чего его невозможно изменить. Т.е. в ниспадающем списке выбрать можно, но при сохранении изменения не учитываются.
*

homutke

  • Захожу иногда
  • 71
  • 4 / 0
Только что обнаружил: при выгрузке товара устанавливается первый производитель из списка,  после чего его невозможно изменить. Т.е. в ниспадающем списке выбрать можно, но при сохранении изменения не учитываются.

А в commerceML из 1С не выгружается производитель, поэтому все вешается на 1.
*

Cybervizor

  • Захожу иногда
  • 111
  • 8 / 0
А в commerceML из 1С не выгружается производитель, поэтому все вешается на 1.
Но в админке вручную, уже после загрузки, тоже нельзя изменить...
*

daddy7

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
А в commerceML из 1С не выгружается производитель, поэтому все вешается на 1.

На другом проекте исользую HostCMS, так там эту проблему решили выгрузкой производителя в дополнительное свойство товара. Предлагаю и здесь сделать по аналогии. в 1С в дополнительных свойствах товара заводим свойство с наименованием "Производитель" и его значение тащим в поле производителя.

На самом деле у меня сейчас образовалось некоторое количество совбодного времени, так что могу помочь в разработке и тестировании.
*

homutke

  • Захожу иногда
  • 71
  • 4 / 0
На другом проекте исользую HostCMS, так там эту проблему решили выгрузкой производителя в дополнительное свойство товара. Предлагаю и здесь сделать по аналогии. в 1С в дополнительных свойствах товара заводим свойство с наименованием "Производитель" и его значение тащим в поле производителя.

На самом деле у меня сейчас образовалось некоторое количество совбодного времени, так что могу помочь в разработке и тестировании.

Можно но плохо, свойства из 1С выыгружаются только Реквизит, а наименование свойства нет.


Помочь можно, сейчас не могу разобраться с характеристиками. Если на товаре висит характеристики, то он выгружается в commerceml n-раз, сколько характеристик присутствует в товаре.

Не могу почему то проверить в массиве на наличии ключа , вот пример работает


Код
<?
$search_array = array();

$search_array["49a4a3b7-f82a-11dd-9948-001a9271c4e4#462469d5-6257-11df-8e3c-000ea64896bf"][1] = 1;
 $search_array["29a4a3b7-f82a-11dd-9948-001a9271c4e4#462469d5-6257-11df-8e3c-000ea64896bf"][1] = 4;

print_r($search_array);
if (array_key_exists("49a4a3b7-f82a-11dd-9948-001a9271c4e4#462469d5-6257-11df-8e3c-000ea64896bf", $search_array)) {
    echo "The 'first' element is in the array";
}

?>

А в моем варианте когда происходит проверка на наличие ключа он считает, что их нет. Проблема с типом что ли?


<?
//  категории товара
$products         =   array();
$char      =   array();

Код
function products_create($xml) {
global $products;
if (!isset($xml->Товары)) {
return $products;
}

foreach ($xml->Товары->Товар as $product_data) {
$owner = (string)$product_data->Ид;
if (array_key_exists($owner,$products)) {
if (isset($product_data->ХарактеристикиТовара)) {

}
}
else {

$products[$owner]['Артикул'] =(string)$product_data->Артикул;
if (isset($product_data->ХарактеристикиТовара)) {

foreach ($product_data->ХарактеристикиТовара->ХарактеристикаТовара as $char_data) {

}
}


}



}
return $products;
}

$xml = simplexml_load_file('c:\bitrix\uploads\import.xml');
$products = products_create($xml->Каталог);

print_r($products);

?>
*

daddy7

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Все правильно у тебя написано, только кодировку файлу скрипта поставь UTF-8, проблема в трансляции русских названий разделов CML

Цитировать
Можно но плохо, свойства из 1С выыгружаются только Реквизит, а наименование свойства нет.

Все там выгружается... Там в начале файла идет описание дополнительных свойств товара, у меня это выглядит примерно так:
Код
<Свойства>
<Свойство>
<Ид>b51e8308-0b52-11df-995b-00116b3281cc</Ид>
<Наименование>HOSTCMS_KEYWORDS</Наименование>
<ТипыЗначений>
<ТипЗначений>
<Тип>Строка</Тип>
</ТипЗначений>
</ТипыЗначений>
</Свойство>
<Свойство>
<Ид>b51e8309-0b52-11df-995b-00116b3281cc</Ид>
<Наименование>HOSTCMS_МЕТКИ</Наименование>
<ТипыЗначений>
<ТипЗначений>
<Тип>Строка</Тип>
</ТипЗначений>
</ТипыЗначений>
</Свойство>
<Свойство>
<Ид>7adac03a-0f65-441e-a33e-70ab611e58b2</Ид>
<Наименование>Коды</Наименование>
<ТипыЗначений>
<ТипЗначений>
<Тип>Строка</Тип>
</ТипЗначений>
</ТипыЗначений>
</Свойство>
</Свойства>
Идет в разделе "Классификатор" после описания групп
*

homutke

  • Захожу иногда
  • 71
  • 4 / 0
Все правильно у тебя написано, только кодировку файлу скрипта поставь UTF-8, проблема в трансляции русских названий разделов CML

Все там выгружается... Там в начале файла идет описание дополнительных свойств товара, у меня это выглядит примерно так:
Код
<Свойства>
<Свойство>
<Ид>b51e8308-0b52-11df-995b-00116b3281cc</Ид>
<Наименование>HOSTCMS_KEYWORDS</Наименование>
<ТипыЗначений>
<ТипЗначений>
<Тип>Строка</Тип>
</ТипЗначений>
</ТипыЗначений>
</Свойство>
<Свойство>
<Ид>b51e8309-0b52-11df-995b-00116b3281cc</Ид>
<Наименование>HOSTCMS_МЕТКИ</Наименование>
<ТипыЗначений>
<ТипЗначений>
<Тип>Строка</Тип>
</ТипЗначений>
</ТипыЗначений>
</Свойство>
<Свойство>
<Ид>7adac03a-0f65-441e-a33e-70ab611e58b2</Ид>
<Наименование>Коды</Наименование>
<ТипыЗначений>
<ТипЗначений>
<Тип>Строка</Тип>
</ТипЗначений>
</ТипыЗначений>
</Свойство>
</Свойства>
Идет в разделе "Классификатор" после описания групп

Да ты прав, добавлю обработку свойства Производитель в скрипт.
*

daddy7

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Этот же механизм можно будет использовать для заполнения и остальных своств товара в VirtueMart
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

1C УТ 8.x &lt;-&gt; VirtueMart по протоколу CommerceML

Автор Centoff

Ответов: 1315
Просмотров: 192436
Последний ответ 27.10.2020, 15:32:10
от Leo1986
Как импортировать файл XML в Joomla VirtueMart?

Автор Кот Смюлан

Ответов: 2
Просмотров: 3471
Последний ответ 14.07.2016, 18:40:24
от Berzerker
Обсуждение бесплатного компонента импорта-экспорта товаров VirtueMart "CSV Improved 1.9"

Автор danklassik

Ответов: 14
Просмотров: 15184
Последний ответ 18.02.2016, 10:21:33
от Storm
Перенос товаров с сайта на сайт (оба на joomla+virtuemart)

Автор fedorkit

Ответов: 8
Просмотров: 12854
Последний ответ 31.01.2016, 22:09:30
от Messir
VirtueMart 1.1.3 stable - выгрузка товаров в яндекс.маркет

Автор zufar

Ответов: 691
Просмотров: 162224
Последний ответ 05.02.2015, 16:39:22
от newjey