Модуль импорта Товаров из CommerceML 1С D6

Главные вкладки

Аватар пользователя ASV ASV 24 октября 2009 в 6:09

Модуль импорта из файла import.xml (выгрузка из УТ обмен с сайтом для Bitrix).
- Группы номенклатуры в taxonomy.
- Номенклатуру в node типа product.
- Свойства номенклатуры в taxonomy.
- Свойства номенклатуры в имени которых есть "(b)" в тело ноды. Sad
- Характеристики товара пишутся в тело ноды.
- Загрузка картинок в поле field_image_cache.
-! Картинки загружаются при вторичной загрузке.
-! Товар обновляется при изменнении Наименования, либо Принудительно.

из файла offers.xml
- цены номенклатуры, при не равных ценах (в базе и файле) происходит изменение.
-! загружается первая найденная цена. (рекомендуется в 1с устанавливать отбор по типу).

-!! Файлы импорта и картинки находятся в каталоге модуля.

ВложениеРазмер
Иконка пакета cmlimport-6.x-1.0.zip519.47 КБ

Комментарии

Аватар пользователя BMW BMW 24 октября 2009 в 17:31

Как свойства типа "список" обрабатываются? тоже в тело?
Свойства разделов?
Пользовательские свойства?

Аватар пользователя ASV ASV 26 октября 2009 в 2:44

//Как свойства типа "список" обрабатываются? тоже в тело?
где в типовой 1с свойства с типов список?

//Свойства разделов?
разделы это группы? у них нет свойств.

//Пользовательские свойства?
все свойства являются пользовательскими

Аватар пользователя BMW BMW 27 октября 2009 в 18:19

"ASV" wrote:
где в типовой 1с свойства с типов список?

Тип свойства элемента инфоблока -> Список

"ASV" wrote:
разделы это группы? у них нет свойств.

Как таковых свойств нет, но есть Дополнительные свойства (Пользовательские свойства).

"ASV" wrote:
все свойства являются пользовательскими

Смотри выше, что я имел ввиду.

Аватар пользователя shamkir shamkir 30 октября 2009 в 12:27

Модуль поставил. При импорте выходит ошибка, но xml импортируется. Так же при попытки редактирования ноды выходит вот такая вот ошибка:
warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'product_node_form' was given in d:\asd\includes\form.inc on line 371.
Что не так?

Аватар пользователя n-oberemko n-oberemko 7 ноября 2009 в 23:36

До экспериментов хотелось бы узнать, импорт реализован из CommerceML-1 (1С:Торговля и склад v7.7) или из CommerceML-2 (1С:Управление торговлей v8)?

Аватар пользователя n-oberemko n-oberemko 9 ноября 2009 в 9:30

Возник вопрос как правильно удалять товары? После ручного удаления нод загрузка становится не возможно. Грузятся пустые ноды. После очищения mysql таблицы модуля загрузка пошла но затерла старые ноды.

Аватар пользователя ASV ASV 9 ноября 2009 в 10:27

n-oberemko, можно снимать с публикации ноду.

Если очистить таблицу cml_id, то загрузка не должна затереть старые ноды, должны создаваться новые.

Аватар пользователя konstantin.89 konstantin.89 6 апреля 2010 в 16:30

Подскажите пожалуйста, может кто знает, а по какой причине может не заносится цена при импорте? Импорт проходит, и на всех товарах 0.00$.
Может из 1с неправильно экспортировал? или я что то не так понял?
Потом руками цена забивается, а вот при импорте одни нули.

Аватар пользователя Arseniy Arseniy 21 ноября 2010 в 16:57

konstantin.89 wrote:
Подскажите пожалуйста, может кто знает, а по какой причине может не заносится цена при импорте? Импорт проходит, и на всех товарах 0.00$.
Может из 1с неправильно экспортировал? или я что то не так понял?
Потом руками цена забивается, а вот при импорте одни нули.

Цена не будет грузиться, если Вы не выгрузили файл offers.xml

Аватар пользователя Xor-Studio Xor-Studio 7 апреля 2010 в 17:42

Помогите мне кто нибудь разобраться, пожалуйста((( я с 1с знаком очень слабо...тока начал знакомиться...поскоку понадобилось...и я не понимаю как мне генерировать этот xml ...у меня 1с 7.7 склад и торговля...как мне из него экспорт такой получить

Аватар пользователя ASV ASV 10 ноября 2015 в 11:46

Обновление
6.x-1.1
- Добавлена форма настроек.
- Возможность загрузки остатков в поля cck(необходимо исправление 1С).
- Загрука по cron.
- ! При загрузке Предложений очищаются цены

Аватар пользователя konstantin.89 konstantin.89 23 мая 2010 в 20:05

"ASV" wrote:
- Возможность загрузки остатков в поля cck(необходимо исправление 1С).

Возможно задам самый тупой вопрос, если не сложно - поделитесь, как именно настроить? Какие поля создать в cck?
Заранее спасибо.

Аватар пользователя ASV ASV 24 мая 2010 в 16:26

созадть поле CCK field_count. в cmlimport.module внести изменения

<?php
//в  function cmlimport_offers_load() добавить
if (isset($offer_data->Количество)){  //&&($change)
  
if (!isset($node_current)) {$node_current node_load($nid);}
  
$node_current->field_count    = array(=> array('value' =>  $offer_data->Количество,'format' => 4,)); 
  
$change true;
}
//перед
if ($change) {
?>

должно заработать

Аватар пользователя konstantin.89 konstantin.89 24 мая 2010 в 18:57

Огромное спасибо, всё заработало, модуль классный!

P.S. ммммда, мне б так научиться...

а реально сделать чтоб количество в базу uk_stock забивались?

Аватар пользователя konstantin.89 konstantin.89 25 мая 2010 в 3:31

После перехода на ноовый модуль стал выдавать

warning: array_merge() [function.array-merge]: Argument #2 is not an array in /home/krasnodo/public_html/shop/sites/all/modules/filefield/filefield_field.inc on line 275.
warning: array_merge() [function.array-merge]: Argument #2 is not an array in /home/krasnodo/public_html/shop/sites/all/modules/filefield/filefield_field.inc on line 275.
warning: array_merge() [function.array-merge]: Argument #2 is not an array in /home/krasnodo/public_html/shop/sites/all/modules/filefield/filefield_field.inc on line 275.
warning: array_merge() [function.array-merge]: Argument #2 is not an array in /home/krasnodo/public_html/shop/sites/all/modules/filefield/filefield_field.inc on line 275.
warning: array_merge() [function.array-merge]: Argument #2 is not an array in /home/krasnodo/public_html/shop/sites/all/modules/filefield/filefield_field.inc on line 275.
warning: array_merge() [function.array-merge]: Argument #2 is not an array in /home/krasnodo/public_html/shop/sites/all/modules/filefield/filefield_field.inc on line 275.

и перестала грузиться картинка по умолчанию. Ставлю старый, всё грузит без проблем.

Аватар пользователя konstantin.89 konstantin.89 7 июня 2010 в 18:21

Вопрос таков, кто возьмётся доделать модуль и сколько будет стоить, чтоб количество на складе автоматом вбивалось в uk_stock, нужно чтоб работало как с ценами(возможность обновления).
Если кто такое уже реализовывал и может поделиться(Хоть безвозмездно хоть за вознаграждение), буду очень благодарен. Smile

Аватар пользователя Сергей Зу Сергей Зу 9 июня 2010 в 12:48

Добрый день.
Столкнулся с такой проблемой.
При загрузке одних и тех же товаров (с целью обновления информации о ценах) происходить повторное создание групп товаров в taxonomy.
Т.е. сам товар обновляется, а вот группа (в taxonomy) создается новая.
Использую cmlimport-6.x-1.0.zip
Пробовал на друпале версии 16, обновлял до 18 - не помогло.
Подскажите, пожайлуста, где может быть проблема?
Спасибо

Аватар пользователя ASV ASV 10 июня 2010 в 2:01

"Сергей Зу" wrote:
Т.е. сам товар обновляется, а вот группа (в taxonomy) создается новая.

значит испорт не может найти старую группу "по имени". может имена групп меняете вручную

Аватар пользователя Сергей Зу Сергей Зу 10 июня 2010 в 13:13

В том-то и дело, что нет. Группы не меняются (и не меняю).
Имена групп - символы кириллицы, длина -не более 50 символов.
Может посоветуете, что делать?
Есть ли смысл имена групп "переделать" на латиницу?

Аватар пользователя Сергей Зу Сергей Зу 10 ноября 2015 в 11:46

ASV wrote:
"Сергей Зу" wrote:
Т.е. сам товар обновляется, а вот группа (в taxonomy) создается новая.

значит испорт не может найти старую группу "по имени". может имена групп меняете вручную

Сейчас проверил.
Происходит следующее

1. При каждой загрузке товаров создается новый "Классификатор" (в таксономии), но с пустым списком терминов
2. В первом "Классификаторе" происходит дублирование название группы товаров (это уже в списке терминов)
Во вложении - рисунок

Аватар пользователя ASV ASV 11 июня 2010 в 2:23

Нужно удалить все лишиние "Классификаторы" и задвенные термины. После этого пробовать импорт.

"Сергей Зу" wrote:
Есть ли смысл имена групп "переделать" на латиницу?

На русском все должно работать.

Аватар пользователя Сергей Зу Сергей Зу 10 ноября 2015 в 11:46

ASV wrote:
Нужно удалить все лишиние "Классификаторы" и задвенные термины. После этого пробовать импорт.
"Сергей Зу" wrote:
Есть ли смысл имена групп "переделать" на латиницу?

На русском все должно работать.

Странно
Как Вы сказали - удалил все "Классификаторы" и задвоенные термины.
Делаю импорт из ваших данных (тех, которые вложены в архив модуля).
ОПЯТЬ происходит дублирование. Может необходимо сделать какие-нибудь доп настройки в Друпале? (я не специалист по php, я программист 1С)
Сделал принт-скрины, прикладываю к сообщению.
Может дело в хостинге? у мнея РБК-хостинг

Аватар пользователя Сергей Зу Сергей Зу 24 июня 2010 в 12:03

Сергей Зу wrote:
ASV wrote:
Сергей Зу, база не в utf похоже

база в кодировке utf8_general_ci. Правильно? Или должна быть другой?

Никак не получается.
Кодировку в utf выставил, всё равно происходит задвоение категория (групп) товаров.
Сделал по другому (основная цель всего - это обновление цен ежедневное, характеристики товара и его название - не меняются)
1. Товары заношу в Ubercart вручную, прописываю все характеристики , НО артикул ставлю равным коду товара в базе 1С
2. При необходимости обновлени цен -запускаю обработку в 1С. Обработка подключается непосредственно к БД MySQL, находит нужный товар по артиклу и проставляет нужную цену. Всё работает.
Наверное неуклюже, но цель - достигнута.

Аватар пользователя BRETER BRETER 14 июня 2010 в 22:09

Доброго времени суток. Спасибо за cmlimport.
Если я правильно понимаю, Ubercart создает в таксономии словарь "Catalog" для товаров, а модуль cmlimport импортирует товары в словарь "Вид товара". Сейчас приходится менять Администрирование › Store administration › Конфигурация › Настройки каталога со словаря "Catalog" на словарь "Вид товара".
1) Почему импорт не в словарь "Catalog"?
2) Стоит полный комплект модулей рекомендованных к установке с Ubercart, импортировал базу которая идет в комплекте с cmlimport-6.x-1.0. с помощью версии cmlimport-6.x-1.1. импортировал по инструкции 2 раза, но рисунки в каталоге и товаре так и не отображаются, хотя под админом в режиме редактирования товара рисунок виден, в чем может быть проблема?

Аватар пользователя Товарищ 620 Товарищ 620 15 июня 2010 в 11:38

Сколько будет стоить создание полнофункционального модуля импорта/экспорта CML?

Функциональное наполнение я беру отсюда:
http://www.1c.ru/rus/products/1c/predpr/xml_descr.htm

Схематично, все дерево возможных операций приведено тут:
http://www.1c.ru/rus/products/1c/predpr/xml-schs.htm#DATA_DESCRIPTION_TREE

Аватар пользователя ASV ASV 15 июня 2010 в 12:21

"BRETER" wrote:
а модуль cmlimport импортирует товары в словарь "Вид товара".

откуда "Вид товара". словарь называется Классификатор.
"BRETER" wrote:
1) Почему импорт не в словарь "Catalog"?

мне так захотелось.
"BRETER" wrote:
2) Стоит полный комплект модулей рекомендованных к установке с Ubercart, импортировал базу которая идет в комплекте с cmlimport-6.x-1.0. с помощью версии cmlimport-6.x-1.1. импортировал по инструкции 2 раза, но рисунки в каталоге и товаре так и не отображаются, хотя под админом в режиме редактирования товара рисунок виден, в чем может быть проблема?

кэширование? или проблемы с правами на папку для ImageCache

Аватар пользователя BRETER BRETER 15 июня 2010 в 17:49

Проблема с отображением рисунков решилась. Как я понял глючил ImageCache т.к. при попытке посмотреть его свойства вылез белый экран смерти, а после возврата на предыдущую страницу появилось сообщение о том, что созданы папки ImageCache и что надо запустить cron, запустил и все стало нормально.

Аватар пользователя konstantin.89 konstantin.89 24 июня 2010 в 21:07

Сергей Зу Может это конечно и не правильно, но я эту проблему решил через перенастройку сайта с mysql на mysqli. Попробуйте, может поможет

Аватар пользователя Arseniy Arseniy 21 ноября 2010 в 16:17

Подскажите, пожалуйста, а как подправить модуль, чтобы в количество добавляемое в корзину по умолчанию писалось определенное значение?

Спасибо.

Аватар пользователя Arseniy Arseniy 21 ноября 2010 в 16:54

И еще вопросик. Тема уже вроде поднималась, но видимо, так решения и нет. При повторной загрузке дублируются категории в словаре. Как победить?

Аватар пользователя ASV ASV 23 ноября 2010 в 8:43

"Arseniy" wrote:
И еще вопросик. Тема уже вроде поднималась, но видимо, так решения и нет. При повторной загрузке дублируются категории в словаре. Как победить?

смотреть кодировки или
"konstantin.89" wrote:
Сергей Зу Может это конечно и не правильно, но я эту проблему решил через перенастройку сайта с mysql на mysqli. Попробуйте, может поможет

Аватар пользователя Arseniy Arseniy 24 ноября 2010 в 11:51

ASV wrote:
смотреть кодировки

А что собственно смотреть в кодировках?

Файлы в UTF-8 база тоже:
<?xml version="1.0" encoding="UTF-8"?>

MySQL-кодировка:
UTF-8 Unicode (utf8)

Аватар пользователя ASV ASV 23 ноября 2010 в 8:45

"Arseniy" wrote:
Подскажите, пожалуйста, а как подправить модуль, чтобы в количество добавляемое в корзину по умолчанию писалось определенное значение?

нужно смотреть есть ли такая возможность в уберкате, и где хранится это значение

Аватар пользователя DEMENTOR DEMENTOR 10 ноября 2015 в 11:47

Всем привет. Извиняюсь за нескромный и дилетантский вопрос, но как можно конфигурировать модуль?
После установки появился пункт меню "CML import", ведущий на страницу, содержащую флажок "Принудительная замена" и текстовое поле. Негусто. Явно, что-то сделал не так Smile

ЗЫ: уберкарт установлен

ЗЗЫ: пробовал подсунуть в текстовое поле пути к import.xml и offers.xml, но к какому-либо положительному результату не привело.

Заранее спасибо!

Аватар пользователя Arseniy Arseniy 24 ноября 2010 в 11:47

DEMENTOR wrote:
ЗЗЫ: пробовал подсунуть в текстовое поле пути к import.xml и offers.xml, но к какому-либо положительному результату не привело.

Заранее спасибо!


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

Аватар пользователя Arseniy Arseniy 24 ноября 2010 в 14:42

А количество товара, добавляемое в корзину по умолчанию задается добавлением строчки в функцию cmlimport_products_create

$product->default_qty = 1;

я на всякий случай добавил в 2 местах, не вникая в логику кода, так сказать Smile

<?php        unset($product->sell_price);
        if (
$nid) {

            

$product node_load($nid);
            if (
$force_replaСЃe){
                
$change TRUE;    
                
$cml_nodestitle++;
            }
            if (
$product->title != $title){
                
$change true;
                
$cml_nodestitle++;
            }
        }
        else {
            
$product->unique_hash = (string)$product_data->Ид;
            
$product->type 'product';
            
$product->uid $user->uid;
            
$product->name $user->name;
            
$product->default_qty 1;

            

$change true;
            
$cml_nodesadd++;
        }
        
        if (
$change){
            
$product->revision false//log
            //$product->log = t('Imported product from XML.');
            
$product->status 1;
            
$product->promote 0;
            
$product->title $title;
            
$product->default_qty 1;
?>

Кстати, это очень важное для ряда случаев свойство. Для новых товаров, загружаемых модулем оно равно 0. Из-за этого Ubercart не выводит поле с количеством товаров, а только кнопку "Добавить" и добавляет в корзину по 1 штуке. Если вы продаете компакт диски или другой штучный товар, то это нормально, а для оптовой торговли поле очень нужно.

Аватар пользователя Arseniy Arseniy 21 декабря 2010 в 8:55

Не могу разобраться что к чему. После импорта на ряде страниц получаю вот такое сообщение:

warning: Invalid argument supplied for foreach() in bla-bla-bla\modules\cck\content.module on line 1348.

В частности такое сообщение появляется на страницах типа taxonomy/term/nnn и на страницах нод, так же не отображается цена.

Аватар пользователя Arseniy Arseniy 21 декабря 2010 в 9:35

Кстати. А если цена с копейками, то в каком формате она должны быть? Разделитель - запятая или точка?

В смысле, у меня в xml файле копейки через запятую, может быть в этом проблема?

Аватар пользователя H0mRk H0mRk 19 января 2011 в 10:48

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

как исправить?

Аватар пользователя ASV ASV 26 января 2011 в 4:46

H0mRk, правильно настроить 1С
или делать полную выгрузку товаров (можно с условием по наличию или группе)
или включить механизм регистрации изменений для выгрузки на сайт.

загрузку заказов вообще отключить, он не реализована в этом модуле.

Аватар пользователя smartpixel smartpixel 30 января 2011 в 18:35

вопросик. модуль cmlimport-6.x-1.1_3
при импорте возникают следующие ошибки:

# warning: Invalid argument supplied for foreach() in Z:\home\drupal\www\sites\all\modules\cck\content.module on line 1244.
# warning: Invalid argument supplied for foreach() in Z:\home\drupal\www\sites\all\modules\cck\content.module on line 1284.
# warning: Invalid argument supplied for foreach() in Z:\home\drupal\www\sites\all\modules\cck\content.module on line 1284.
# warning: Invalid argument supplied for foreach() in Z:\home\drupal\www\sites\all\modules\cck\includes\content.token.inc on line 39.

Таксономия добавляется а товары нет..
Скажите как это победить?

Аватар пользователя xuesheng xuesheng 3 февраля 2011 в 18:03

Огромное спасибо за модуль. Именно его и не хватало что бы перенести сайт с HostCms на Drupal.
Сейчас буду шаблон натягивать. Если получится будет вообще круть Smile
Обязательно сайт выложу.
Народ а опубликуйте ссылки сайтов где данный модуль используется.

Аватар пользователя wkKOC wkKOC 28 ноября 2012 в 11:03

Удалось ли кому-то победить глюк с невозможностью загрузки после ручного удаления хотя бы одного товара?