Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Модуль Модуль обмена для opencart v2.3 по стандарту CommerceML [Поддержка]


Recommended Posts

34 минуты назад, Blade сказал:

 

 admin/model/extension/exchange1c.php

 

 

в функции qeryOrders() должно быть такой кусок кода:

 

// Разбирает ФИО в массив, чтобы получить отчество

$username = array();

$fields = array('lastname', 'firstname', 'patronymic');

 

// Формируем массив ФИО

foreach ($fields as $field) {

if ($order['payment_' . $field]) {

$username[] = $order['payment_' . $field];

}

}

 

// Собираем полное наименование покупателя, ФИО

$order['username'] = implode(" ", $username);

$this->log($username);

 

// ПОКУПАТЕЛЬ (КОНТРАГЕНТ)

$document['Документ' . $document_counter]['Контрагенты']['Контрагент'] = $this->setCustomer($order);

 

Ориентир

 

 

В полне рабочий вариант..

Надіслати
Поділитися на інших сайтах


Еще одна проблема обнаружилась.. В каждой выгрузке обрабатываются все заказы, в т.ч. и уже выгруженные.. в УТ10, у данных заказов просто меняется время на текущее.

Надіслати
Поділитися на інших сайтах


Еще одна проблема обнаружилась.. В каждой выгрузке обрабатываются все заказы, в т.ч. и уже выгруженные.. в УТ10, у данных заказов просто меняется время на текущее.

Да, я уже знаю, в конце недели исправлю в 12 релизе

Отправлено с моего Power Five Evo через Tapatalk

Надіслати
Поділитися на інших сайтах

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

Подскажите в чем может быть дело? В настройках перепробовал всевозможные варианты...

  • +1 1
Надіслати
Поділитися на інших сайтах


В 13.06.2017 в 13:09, ZibenUA сказал:

День добрый!

 

Модуль 1.6.3.11, УТ 10.3, CML 2.05

 

Есть в ТС цены номенклатуры "Оптовая-10%" и "Оптовая-20%" (и еще есть цены), в опенкарте есть две группы покупателей opt1 и opt2. В настройках модуля в разделе "Связь типов цен (соглашений) в 1С с группами покупателей" появились типы цен, я их привязал к группам покупателей. Запускаю обмен вижу в логе:

 

  Показать контент

Найден товар по GUID, product_id = 148                                       
ПРЕДЛОЖЕНИЕ ТОВАРА ИД: 3b174ede-9466-11e6-9c4a-28c2ddc8f854, product_id = 148
ХАРАКТЕРИСТИКА ИД: 3b174ee2-9466-11e6-9c4a-28c2ddc8f854                      
> Единица измерения: 'шт.'                                                   
Опция: 'Варианты' = '#06'                                                    
> Цена: 100, GUID: cf174b95-4025-11e5-8261-40e230570584                      
> Цена: 36.71, GUID: 69a34da5-555d-11e5-8268-40e230570584                    
> Цена: 80, GUID: 424a7c5f-84b3-11e5-8271-40e230570584                       
> Цена: 95, GUID: 424a7c60-84b3-11e5-8271-40e230570584                       
> Цена: 90, GUID: 424a7c61-84b3-11e5-8271-40e230570584                       
> Цена: 39.28, GUID: 8e5885d0-89d6-11e5-8272-40e230570584                    
> Цена для записи в товар: 100 для одной базовой единицы товара              
Основная цена (мин): 0                                                       
В товаре обновлено поле date_modified                                        

 

Но цены в товаре нет :(

Если я верно понимаю, то Основная цена 0 - это и есть причина отсутствия цены у меня в товаре? Пробовал для всех типов цен в ТС поставить что их грузить в таблицу Товар:

  Показать контент

Найден товар по GUID, product_id = 148                                        
ПРЕДЛОЖЕНИЕ ТОВАРА ИД: 3b174ede-9466-11e6-9c4a-28c2ddc8f854, product_id = 148 
ХАРАКТЕРИСТИКА ИД: 3b174ee1-9466-11e6-9c4a-28c2ddc8f854                       
> Единица измерения: 'шт.'                                                    
Опция: 'Варианты' = '#03'                                                     
> Цена: 100, GUID: cf174b95-4025-11e5-8261-40e230570584                       
> Цена: 40.99, GUID: 69a34da5-555d-11e5-8268-40e230570584                     
> Цена: 80, GUID: 424a7c5f-84b3-11e5-8271-40e230570584                        
> Цена: 95, GUID: 424a7c60-84b3-11e5-8271-40e230570584                        
> Цена: 90, GUID: 424a7c61-84b3-11e5-8271-40e230570584                        
> Цена: 43.86, GUID: 8e5885d0-89d6-11e5-8272-40e230570584                     
> Цена для записи в товар: 100 для одной базовой единицы товара               
> Цена для записи в товар: 40.99 для одной базовой единицы товара             
> Цена для записи в товар: 80 для одной базовой единицы товара                
> Цена для записи в товар: 95 для одной базовой единицы товара                
> Цена для записи в товар: 90 для одной базовой единицы товара                
> Цена для записи в товар: 43.86 для одной базовой единицы товара             
Основная цена (мин): 0                                                        
В товаре обновлено поле date_modified                                         
 

 

Также не прилетают цены для групп пользователей, в какую б таблицу (акции или скидки) я их не пробовал вливать :(

 

Плз подскажите где косячу?

 

тоже везде цены 0 . Вы решили проблему?

 

Сделал ручной ипорт цен выскочила ошибка

Notice: Undefined index: table_price in /home/admin/model/extension/exchange1c.php on line 5225
Notice: Undefined index: table_price in /home/admin/model/extension/exchange1c.php on line 5140
Notice: Undefined index: table_price in /home/admin/model/extension/exchange1c.php on line 5160

Проверял на oc 1.5 выгрузка проходит.

Приложил файл offers.xml

Змінено користувачем milkamil93
Надіслати
Поділитися на інших сайтах

Еще одна проблемка вылезла, может кто сталкивался..

Загружаю Производителя (в 1С-ке у меня это поле Бренд), и она создает на КАЖДЫЙ товар своего производителя... хотя в настройках ставлю поиск по наименованию.

В итога в производителях несколько десятков Сони, ну и так далее.

 

Что я не так делаю?

  • +1 1
Надіслати
Поділитися на інших сайтах


7 часов назад, Bisenes сказал:

Как временное решения для себя:

Закомментирован строку: 6233

 

Изменил немного в функции (строки 6292 и 6313)

 

Товары выгружаются корректно в УТ10

 

С выгрузкой заказов это не помогло...( Все равно не работает.

Змінено користувачем Figaro13
ошибка
Надіслати
Поділитися на інших сайтах


Вот что пишет при попытке загрузить заказы

 

2017-06-15 19:15:28 - Client IP address: 85.93.58.147
2017-06-15 19:15:28 - 3.011 Mb | 6328 | ==== Выгрузка заказов ====
2017-06-15 19:15:28 - 3.013 Mb | 6341 | 2001-01-01 00:00:00
2017-06-15 19:15:28 - 3.015 Mb | 6347 | SELECT `order_id`,`order_status_id` FROM `oc_order` WHERE `date_modified` BETWEEN STR_TO_DATE('2001-01-01 00:00:00', '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE('2017-06-15 19:15:28', '%Y-%m-%d %H:%i:%s')
2017-06-15 19:15:28 - 3.017 Mb | 6359 | SELECT `order_id`,`order_status_id` FROM `oc_order` WHERE `order_status_id` = 2
2017-06-15 19:15:28 - 3.520 Mb | 6390 | > Выгружается заказ #1
2017-06-15 19:15:28 - 3.539 Mb | 0453 | SELECT `language_id` FROM `oc_language` WHERE `code` = 'ru-ru'
2017-06-15 19:15:28 - 3.538 Mb | 0455 | Определен язык language_id: 1
2017-06-15 19:15:28 - 3.539 Mb | 6055 | SELECT `name` FROM `oc_order_status` WHERE `order_status_id` = 1 AND `language_id` = 1
2017-06-15 19:15:28 - 3.536 Mb | 0514 | SELECT `guid` FROM `oc_product_to_1c` WHERE `product_id` = 7138
2017-06-15 19:15:28 - PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/steklomir/op.steklomir.com/docs/admin/model/extension/exchange1c.php:1) in /home/steklomir/op.steklomir.com/docs/admin/controller/extension/module/exchange1c.php on line 2531

 

Надіслати
Поділитися на інших сайтах


2 часа назад, Figaro13 сказал:

Еще одна проблемка вылезла, может кто сталкивался..

Загружаю Производителя (в 1С-ке у меня это поле Бренд), и она создает на КАЖДЫЙ товар своего производителя... хотя в настройках ставлю поиск по наименованию.

В итога в производителях несколько десятков Сони, ну и так далее.

 

Что я не так делаю?

Та же проблема, не решил, может у Вас получится, вот советовали...

В 21.05.2017 в 22:49, Asm666 сказал:

У меня так было в Рознице. Если правильно помню, я тогда со свойствами намудрил, добавил  Изготовитель в Дополнительных реквизитах "Доп свойства справочника "Характеристика номенклатуры"  и включил для Номенклатуры характеристики, вот тогда производитель создавался много раз. После просто создал в Доп. свойства справочника "Номенклатура" вместо Доп. свойства справочника "Характеристики номенклатуры"  и отключил характеристики.

 

Надіслати
Поділитися на інших сайтах


4 часа назад, milkamil93 сказал:

тоже везде цены 0 . Вы решили проблему?

 

Сделал ручной ипорт цен выскочила ошибка


Notice: Undefined index: table_price in /home/admin/model/extension/exchange1c.php on line 5225
Notice: Undefined index: table_price in /home/admin/model/extension/exchange1c.php on line 5140
Notice: Undefined index: table_price in /home/admin/model/extension/exchange1c.php on line 5160

Проверял на oc 1.5 выгрузка проходит.

Приложил файл offers.xml

Нет, пока не решил :(

Надіслати
Поділитися на інших сайтах

Добрый день,

Версия модуля 1.6.3.11
Версия ocStore 2.1.0.2.1

CML 2.04

 

В процессе работы с модулем у меня лично возникали некоторые проблемы, решением которых хочу поделиться.

Заранее предупреждаю, что данные решения не являются панацеей и удовлетворяют сугубо мои потребности.

 

и так поехали:

1. Проблема с обновлением картинок

У меня проблема заключается в том что новые фотографии отправляемые из 1с имеют то же имя, но другое содержимое.

А участок кода проверял существует ли уже эта картинка, если существует идем дальше, а мне нужно заменить!

( в файле admin/controller/module/excenge1c.php строка 1919)

Скрытый текст

          if (is_file(DIR_IMAGE.$name)) {
            //$this->log('[zip] file exist: '.$name, 2);
         } else {
            $dump = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));

            // для безопасности проверим, не является ли этот файл php
            $pos = strpos($dump, "<?php");

            if ($pos !== false) {
               $this->log("[!] ВНИМАНИЕ Файл '" . $name . "' является PHP скриптом и не будет записан!");

            } else {

               if (file_exists(DIR_IMAGE . $name) && $this->config->get('exchange1c_product_images_import_mode') != 'full') {
                  return "";
               }
               $fd = @fopen(DIR_IMAGE . $name, "w+");

               if ($fd === false) {
                  return "Ошибка создания файла: " . DIR_IMAGE.$name . ", проверьте права доступа!";
               }

               //$this->log('[zip] create file: '.$name, 2);
               fwrite($fd, $dump);
               fclose($fd);

               // для безопасности проверим, является ли этот файл картинкой
//             $image_info = getimagesize(DIR_IMAGE.$name);
//             if ($image_info == NULL) {
//                $this->log("[!] ВНИМАНИЕ Файл '" . $name . "' не является картинкой, и будет удален!");
//                unlink(DIR_IMAGE.$name);
//             }
            }
         }

 

Тогда я убрал условия проверяющее наличие картинки, теперь модуль принудительно записывает полученные картинки, даже если они существуют.

Возможно оптимизацией тут не пахнет, стоит сделать проверку хотя бы по размеру файла, если совпадает имя и размер, пропустить обновление.

 

Скрытый текст

         $dump = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));

         // для безопасности проверим, не является ли этот файл php
         $pos = strpos($dump, "<?php");

         if ($pos !== false) {
            $this->log("[!] ВНИМАНИЕ Файл '" . $name . "' является PHP скриптом и не будет записан!");

         } else {

            if (file_exists(DIR_IMAGE . $name) && $this->config->get('exchange1c_product_images_import_mode') != 'full') {
               return "";
            }
            $fd = @fopen(DIR_IMAGE . $name, "w+");

            if ($fd === false) {
               return "Ошибка создания файла: " . DIR_IMAGE.$name . ", проверьте права доступа!";
            }

            //$this->log('[zip] create file: '.$name, 2);
            fwrite($fd, $dump);
            fclose($fd);

            // для безопасности проверим, является ли этот файл картинкой
//             $image_info = getimagesize(DIR_IMAGE.$name);
//             if ($image_info == NULL) {
//                $this->log("[!] ВНИМАНИЕ Файл '" . $name . "' не является картинкой, и будет удален!");
//                unlink(DIR_IMAGE.$name);
//             }
         }

 

2. Не обновляются наименование товара и описание товара

Я решил это следующим путем:

Добавил два условия в admin/model/tool/exchenge1c

в функцию private function updateProduct($data)

Сразу после "// КОНЕЦ ФИЛЬТРА"

строка 2555

 

Скрытый текст

// Записываем новое наименование товара
if (isset($data['name'])) {
    $this->updateProductName($data['name'], $data['product_id']);
    if ($this->ERROR) return false;
}

// Записываем новое описания товара
if (isset($data['description']))  {
    $this->updateProductDescription($data['description'], $data['product_id']);
    if ($this->ERROR) return false;
}

 

Добавил 2 функции в admin/model/tool/exchenge1c
После функции updateProductAttributes()

в строку 3707
 

Скрытый текст

/**
 * Обновляет наименование товара
 */
private function updateProductName($name, $product_id) {

    // Проверяем
    $query = $this->query("SELECT `name` FROM `" . DB_PREFIX . "product_description` WHERE `product_id` = " . $product_id . " AND `language_id` = " . $this->LANG_ID);
    // Проверим значение и обновим при необходимости
    if ($query != $name) {
        $this->query("UPDATE `" . DB_PREFIX . "product_description` SET `name` = '" . $this->db->escape($name) . "' WHERE `product_id` = " . $product_id . " AND `language_id` = " . $this->LANG_ID);
        $this->log("Наименование товара обновлено'" . $this->db->escape($name) . "' = '" . $this->db->escape($name) . "' записано в товар id: " . $product_id, 2);
    }
    unset($query);
} // updateProductName()

/**
 * Обновляет описание товара
 */
private function updateProductDescription($description, $product_id) {

    // Проверяем
    $query = $this->query("SELECT `description` FROM `" . DB_PREFIX . "product_description` WHERE `product_id` = " . $product_id . " AND `language_id` = " . $this->LANG_ID);
    // Проверим значение и обновим при необходимости
    if ($query != $description) {
        $this->query("UPDATE `" . DB_PREFIX . "product_description` SET `description` = '" . $this->db->escape($description) . "' WHERE `product_id` = " . $product_id . " AND `language_id` = " . $this->LANG_ID);
        $this->log("Наименование товара обновлено'" . $this->db->escape($description) . "' = '" . $this->db->escape($description) . "' записано в товар id: " . $product_id, 2);
    }
    unset($query);
} // updateProductDescription()

 

 

Змінено користувачем indaled72
  • +1 2
Надіслати
Поділитися на інших сайтах


Еще есть баг, когда делаешь выгрузку без картинок (но они есть в принципе, просто тебе нужно обновить все кроме картинок).
 

Этот код подставляет заглушку вместо уже установленных фотографий
( admin/model/tool/exchenge1c)

 

Скрытый текст

// Основная картинка
if (isset($data['images'][0])) {
   $data['image'] = $data['images'][0]['file'];
} else {
   // если картинки нет подставляем эту
   $data['image'] = 'no_image.png';
}

 Учитывая что для новых товаров ставится всегда опенкартовская заглушка, я просто убрал эту строчу из условия:
$data['image'] = 'no_image.png';

Надіслати
Поділитися на інших сайтах


Всем доброй ночи. Автору снова рекпект за поддержку данного модуля! Возник очередной вопрос с категориями. У меня УНФ 1.6, при каждой полной выгрузке из 1С на сайт категории слетают (в частности картинки и сортировка). 1С сволочь не передает сортировку и картинки, поэтому все ручками выставляю на сайте, но как можно убрать обновление категорий? Поставить не загружать категории в админке - это тоже не вариант, так как появляется новый товар и приходится вводить иногда новые категории. ГУИД (id) группы в 1С не меняется, но модуль постоянно его обновляет и затирает. Можно ли как-то сделать проверку, что если гуид уже есть в базе, то его не трогать?

 

Заранее спасибо всем и автору в частности.

Надіслати
Поділитися на інших сайтах


Всем доброй ночи. Автору снова рекпект за поддержку данного модуля! Возник очередной вопрос с категориями. У меня УНФ 1.6, при каждой полной выгрузке из 1С на сайт категории слетают (в частности картинки и сортировка). 1С сволочь не передает сортировку и картинки, поэтому все ручками выставляю на сайте, но как можно убрать обновление категорий? Поставить не загружать категории в админке - это тоже не вариант, так как появляется новый товар и приходится вводить иногда новые категории. ГУИД (id) группы в 1С не меняется, но модуль постоянно его обновляет и затирает. Можно ли как-то сделать проверку, что если гуид уже есть в базе, то его не трогать?

 

Заранее спасибо всем и автору в частности.

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

 

Отправлено с моего Power Five Evo через Tapatalk

 

 

 

  • +1 1
Надіслати
Поділитися на інших сайтах

Добрый день.

Может кто сталкивался, подскажите. Почему не отображаются характеристики? В лога ошибки нет, но и у товара характеристики не появляются. Чувствую, что то с настройками пропустил.

Змінено користувачем uvers
Надіслати
Поділитися на інших сайтах


Виталий добрый день

прошу проверить на 2.3 выгрузку категорий если в нет нет товаров

есть род категория, в ней вложены 5-6 категорий, в 2 еще по 3 категории

ни в одной нет товаров

и сами категории так же не грузятся

остальные (там есть товары) грузятся отлично

 

зы проверил, так и есть. добавил один товар в одну подкатегорию и загрузилась иерархия этой одной ветки

без товаров категории не грузятся

Змінено користувачем Blade
Надіслати
Поділитися на інших сайтах


Добрый день.

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

Например в артикуле есть в Характеристиках позиции - разные цвета и размеры:

товар1, Производитель, Черный, 32

Свойства и значения каждой характеристики соот-но

1)Производитель

2)Цвет

3)Размер

 

При экспорте в таблицу oc_product_feature добавляется соот-щая запись с giud, а в карточке товара увы только один вариант опции (я так понимаю 1-й).

Так же свойство Характеристики "Производитель" не экспортируется в таблицу Производители -(

Прошу помощи.

=====

Модуль 1.6.3.11.

1С 8.3, УТП 1.2 Украина, Opencart Version 2.1.0.2 (trs-2.1.0.0). Связанные опции

1cscr.png

Надіслати
Поділитися на інших сайтах


Добрый день. С выгрузкой заказов стало более-менее ясно: 1С их не загружала, потому что модуль формирует файл orders.xml в кодировке utf-8, 1С-ка ее не понимает.

 

Вопрос: где и как надо поменять эту кодировку?

 

Дальше, при выгрузке заказов из 1С на сайт тоже обмен не идет, пишет что это не XML-файл.

 

Прошу ответить, а то ощущение,что на форуме помогают не всем, а только избранным.

Надіслати
Поділитися на інших сайтах


1 час назад, Figaro13 сказал:

Добрый день. С выгрузкой заказов стало более-менее ясно: 1С их не загружала, потому что модуль формирует файл orders.xml в кодировке utf-8, 1С-ка ее не понимает.

Такая же беда

Oencart Pro 2.3.0.2.2

модуль 1.6.3.11

Змінено користувачем belele
Надіслати
Поділитися на інших сайтах


6 часов назад, uvers сказал:

Добрый день.

Может кто сталкивался, подскажите. Почему не отображаются характеристики? В лога ошибки нет, но и у товара характеристики не появляются. Чувствую, что то с настройками пропустил.

С характеристиками разобрался, но возникли вопросы.

Гружу из Розница 2.2. В 1с включены характеристики. Правила ведения учета характеристик "Индивидуальные для номенклатуры". При таком правиле, выгрузка формируется в формате Ид = Ид_Номенклатуры#Ид_Характеристики. На сколько я понял, такой формат должен парсится при настройке "Режим отображения характеристик: = Стандартный" в настройках дополнения. Посмотрел код. В admin\tool\exchange1c.php 

private function parseOffers($xml)

происходит обработка только варианта "Режим отображения характеристик: = По свойствам". Виталий, а второй вариант работает или нет? И еще... 

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

Надіслати
Поділитися на інших сайтах


Решена проблема с выгрузкой заказов (кодировкой).

 

Дело было в этой строке в файле admin/controller/extenension/modulexchange1C

Там в строке 2531 была такая штука

echo iconv('utf-8', 'cp1251', $orders);

 

И получалось, что в заголовке файла кодировка utf-8, 1С-ка принимает ответ сервера в кодировке utf-8, а тело файла в другой кодировке.

Помогла замена этой строки на

 

echo $orders;

 

  • +1 1
Надіслати
Поділитися на інших сайтах


6 часов назад, Figaro13 сказал:

Решена проблема с выгрузкой заказов (кодировкой).

 

Дело было в этой строке в файле admin/controller/extenension/modulexchange1C

Там в строке 2531 была такая штука

echo iconv('utf-8', 'cp1251', $orders);

 

И получалось, что в заголовке файла кодировка utf-8, 1С-ка принимает ответ сервера в кодировке utf-8, а тело файла в другой кодировке.

Помогла замена этой строки на

 

echo $orders;

 

Мне не помогло =/ 

Все тоже... 

Произошла ошибка: . По причине: 

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


Может кто-то еще сталкивался? На сколько помню, в версии 1.6.2.b28 обмен заказами проходил нормально

Надіслати
Поділитися на інших сайтах


  • dinox changed the title to Модуль обмена для opencart v2.3 с учетной системой по стандарту CommerceML [Поддержка]

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.