Guest vadim Posted October 25, 2015 Share Posted October 25, 2015 [ATTACH]393._xfImport[/ATTACH] Внимание: Модуль полностью идентичен модулю OpenCart Exchange 1C. Отличие заключается только в том, что он нормально работает с OpenCart 2.0. Поддержка: OpenCart 2.0.0.x, 2.0.1.x, 2.0.2.x, 2.0.3.x, 2.1.0.x. Возможности: выгрузка товаров и категорий;загрузка заказов. Установить: Система -> Настройки -> Редактировать -> FTP. Здесь указываем логин, пароль к ftp и домашнюю директорию.Модули -> Установка расширений. Выбираем наш архив и нажимаем Продолжить.Модули -> Модификаторы. Нажимаем кнопку Обновить . Обновить: Модули -> Модификаторы. Выбираем наш модуль и нажимаем кнопку Удалить . После Обновить .Модули -> Установка расширений. Выбираем наш архив и нажимаем Продолжить.Модули -> Модификаторы. Нажимаем кнопку Обновить . Удалить: Модули -> Модификаторы. Выбираем наш модуль и нажимаем кнопку Удалить . После Обновить . Настройка модуля аналогично модулю синхронизации для OpenCart Exchange 1C. Демонстрация модуля: http://asamat.com/demo/2.1.0.x/admin/ Логин: demo Пароль: demo Примечание: Домашняя директория - это по другому те папки, которые нужно открыть, после того, как вы заходите по ftp клиенту. Например: Я захожу по ftp клиенту и вижу папку public_html и внутри этой папки установлен OpenCart. Тогда в этом случае мы укажем "public_html/". [spoiler=Скачать][HIDE=1] http://sh.st/bId0u [/HIDE] Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted November 2, 2015 Share Posted November 2, 2015 День добрый. Хотел бы уточнить. Установил модуль и тестирую. Не могу пройти авторизацию. OC - Version 2.0.3.1 (rs.2) Давайте докрутим модуль. Попробую еще ручную выгрузку. отпишу результат. Quote Link to comment Share on other sites More sharing options...
Guest vadim Posted November 2, 2015 Share Posted November 2, 2015 Не могу пройти авторизацию В .htaccess пропиши правила RewriteCond %{HTTP:Authorization} ^Basic.* RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L] Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted November 2, 2015 Share Posted November 2, 2015 Авторизация прошла на ура. Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted November 3, 2015 Share Posted November 3, 2015 Порылся в интернете и наткнулся на такую ссылку. Пробуйте. Может Вам поможет она более детально разобраться в процессе синхронизации Вашего сайта с 1С. Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted November 3, 2015 Share Posted November 3, 2015 Для тех у кого проблемы с ручной загрузкой: В главном php.ini изменить параметры на magic_quotes_gpc = Off; register_globals = Off; default_charset = UTF-8; memory_limit = 64M; max_execution_time = 18000; upload_max_filesize = 999M; safe_mode = Off; mysql.connect_timeout = 200; session.use_cookies = On; session.use_trans_sid = Off; session.gc_maxlifetime = 12000000; allow_url_fopen = on; ;display_errors = 1; ;error_reporting = E_ALL; Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted November 5, 2015 Share Posted November 5, 2015 Почему то при загрузке не создается таблица в SQL пришлось создать вручную: $this->db->query('CREATE TABLE `" . DB_PREFIX . "product_to_1c` (`product_id` int(11) , `1c_id` TEXT)'); Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted November 5, 2015 Share Posted November 5, 2015 Вот нашел проблему. Ручная синхронизация и автоматическая с 1с не проходит, т.к. сбрасывается загрузка файла. В php.ini все изменено, а файл упорно не идет. Вот морочу голову. Что может быть? Демо-версия работает нормально. Quote Link to comment Share on other sites More sharing options...
Guest vadim Posted November 5, 2015 Share Posted November 5, 2015 Почитайте здесь,может что полезное узнаете и нам потом расскажите Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted November 6, 2015 Share Posted November 6, 2015 Для полноты работы, изменим файлы в drevstroy.org/admin/model/catalog (жирным, что добавляем) [spoiler=Код:] product.php public function deleteProduct($product_id) { ........ $this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$product_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_to_1c WHERE 'product_id=" . (int)$product_id . "'"); ........ } category.php public function deleteCategory($category_id) { ....... $this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'category_id=" . (int)$category_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "category_to_1c WHERE 'category_id=" . (int)$category_id . "'"); ....... } attribute.php public function deleteAttribute($attribute_id) { $this->event->trigger('pre.admin.attribute.delete', $attribute_id); $this->db->query("DELETE FROM " . DB_PREFIX . "attribute WHERE attribute_id = '" . (int)$attribute_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "attribute_description WHERE attribute_id = '" . (int)$attribute_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "attribute_to_1c WHERE attribute_id = '" . (int)$attribute_id . "'"); $this->event->trigger('post.admin.attribute.delete', $attribute_id); } После этого можно спокойно не засорять базу старыми значениями. Можно создать xml, но это для vqmod-овцов Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted November 12, 2015 Share Posted November 12, 2015 Не удается синхронизировать 1C с сайтом. Запускаю. Пишет 1С, что обмен завершен, а в итоге ничего не происходит. Файл соответственно не скачивает на сервер и не пишет ничего в log. Где может быть ступор? Как проверить? Добавил логирование в файл с выгрузкой(model/tool/exchange1c.php). [spoiler=Сама функция]public function errorsLog($log){ $file=DIR_LOGS.'error.log'; $current = file_get_contents($file); $current.= date("d.m.Y H:m:s")." - ".$log."\n"; file_put_contents($file, $current); } [spoiler=Вызов]$this->errorsLog('Передача параметров для выгрузки файла на сервер!'); В итоге: почему то не срабатывает $this->load->model('tool/exchange1c');. И получается, что файлы все передались на сервер, а данные в базу данных не были занесены. Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted November 16, 2015 Share Posted November 16, 2015 Ошибку нашел. Для людей, которые занимаются seo. [spoiler=Сохраняем имя категории:] private function initCategory($category, $parent, $data = array(), $language_id) { $result = array( 'status' => isset($data['status']) ? $data['status'] : 1 ,'top' => isset($data['top']) ? $data['top'] : 1 ,'category_store' => isset($data['category_store']) ? $data['category_store'] : array(0) ,'keyword' => isset($data['keyword']) ? $data['keyword'] : '' ,'image' => (isset($category->Картинка)) ? (string)$category->Картинка : ((isset($data['image'])) ? $data['image'] : '') ,'sort_order' => (isset($category->Сортировка)) ? (int)$category->Сортировка : ((isset($data['sort_order'])) ? $data['sort_order'] : 0) ,'column' => 1 ); $result['category_description'] = array( $language_id => array( 'name' => (isset($data['name'])? $data['name'] : (string)$category->Наименование ,'meta_keyword' => (isset($data['category_description'][$language_id]['meta_keyword'])) ? $data['category_description'][$language_id]['meta_keyword'] : '' ,'meta_description' => (isset($data['category_description'][$language_id]['meta_description'])) ? $data['category_description'][$language_id]['meta_description'] : '' ,'description' => (isset($category->Описание)) ? (string)$category->Описание : ((isset($data['category_description'][$language_id]['description'])) ? $data['category_description'][$language_id]['description'] : '') ,'seo_title' => (isset($data['category_description'][$language_id]['seo_title'])) ? $data['category_description'][$language_id]['seo_title'] : '' ,'seo_h1' => (isset($data['category_description'][$language_id]['seo_h1'])) ? $data['category_description'][$language_id]['seo_h1'] : '' ), ); $result['category_description'][$language_id]['meta_title'] = (isset($data['category_description'][$language_id]['meta_title'])) ? $data['category_description'][$language_id]['meta_title'] : ''; return $result; } [spoiler=И сохраняем url, перенося выделенный код] private function insertCategory($xml, $parent = 0, $language_id) { $this->load->model('catalog/category'); foreach ($xml as $category){ if (isset($category->Ид) && isset($category->Наименование) ){ $id = (string)$category->Ид; $data = array(); $query = $this->db->query('SELECT * FROM `' . DB_PREFIX . 'category_to_1c` WHERE `1c_category_id` = "' . $this->db->escape($id) . '"'); if ($query->num_rows) { $category_id = (int)$query->row['category_id']; $data = $this->model_catalog_category->getCategory($category_id); $data['category_description'] = $this->model_catalog_category->getCategoryDescriptions($category_id); $data = $this->initCategory($category, $parent, $data, $language_id); $this->model_catalog_category->editCategory($category_id, $data); } else { $data = $this->initCategory($category, $parent, array(), $language_id); //$category_id = $this->getCategoryIdByName($data['category_description'][1]['name']) ? $this->getCategoryIdByName($data['category_description'][1]['name']) : $this->model_catalog_category->addCategory($data); $category_id = $this->model_catalog_category->addCategory($data); $this->db->query('INSERT INTO `' . DB_PREFIX . 'category_to_1c` SET category_id = ' . (int)$category_id . ', `1c_category_id` = "' . $this->db->escape($id) . '"'); } $this->CATEGORIES[$id] = $category_id; } if (!$query->num_rows) { //только если тип 'translit' if ($this->config->get('exchange1c_seo_url') == 2) { $cat_name = "category-" . $data['parent_id'] . "-" . $data['category_description'][$language_id]['name']; $this->setSeoURL('category_id', $category_id, $cat_name); } } if ($category->Группы) $this->insertCategory($category->Группы->Группа, $category_id, $language_id); } unset($xml); } Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted November 25, 2015 Share Posted November 25, 2015 Сохраняем ЧПУ у продукта, после выгрузки. Внести поправку, переместив и изменив блоки. [spoiler=admin/model/tool/exchange1c.php функция setProduct]private function setProduct($product, $language_id) { if (!$product) return; // Проверяем, связан ли 1c_id с product_id $product_id = $this->getProductIdBy1CProductId($product['1c_id']); $data = $this->initProduct($product, array(), $language_id); $data['product_description'][$language_id]['name']=str_replace('"', "'", $data['product_description'][$language_id]['name']); if ($product_id) { $this->updateAndRebild($data, $product, $product_id, $language_id); } else { if ($this->config->get('exchange1c_dont_use_artsync')) { $this->load->model('catalog/product'); $product_id = $this->model_catalog_product->addProduct($data); } else { // Проверяем, существует ли товар с тем-же артикулом // Если есть, то обновляем его $product_id = $this->getProductByModel($data['sku']); if ($product_id !== false and $data['sku']!='') { $this->updateProduct($product, $product_id, $language_id); } // Если нет, то создаем новый else { if ($this->config->get('exchange1c_dont_use_name')) { $this->load->model('catalog/product'); $product_id = $this->model_catalog_product->addProduct($data); } else{ $product_id = $this->getProductByName($data['product_description'][$language_id]['name'], $language_id); if ($product_id !== false){ $this->updateProduct($product, $product_id, $language_id); } else{ $this->load->model('catalog/product'); $product_id = $this->model_catalog_product->addProduct($data); } } } } // Добавляем линк if ($product_id){ $this->db->query('INSERT INTO `' . DB_PREFIX . 'product_to_1c` SET product_id = ' . (int)$product_id . ', `1c_id` = "' . $this->db->escape($product['1c_id']) . '"'); } // Устанавливаем SEO URL if ($product_id){ //только если тип 'translit' if ($this->config->get('exchange1c_seo_url') == 2) { $this->setSeoURL('product_id', $product_id, $product['name']); } } } } [spoiler=admin/model/tool/exchange1c.php функция initProduct] Изменить строку записи keywords ,'keyword' => (isset($data['keyword'])) ? $data['keyword'] : (isset($product['keyword']) ? $product['keyword']: '') Если хотите оставить информацию без изменений при синхронизации, то в функции initProduct файла admin/model/tool/exchange1c.php просто поменяйте местами $data и $product. Quote Link to comment Share on other sites More sharing options...
Guest bombo450 Posted November 28, 2015 Share Posted November 28, 2015 1564 version compatibil? thanks Quote Link to comment Share on other sites More sharing options...
Guest vadim Posted November 29, 2015 Share Posted November 29, 2015 1564 version compatibil? thanksNo,only OpenCart 2.0.0.x Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted November 30, 2015 Share Posted November 30, 2015 1564 version compatibil? thanks You can change your Opnecart form 1.5.x to 2.x.x . I find information for you: How to migrate from OpenCart 1.5.1.3+ to OpenCart 2.x with ExcelPort Simulary, you can change any module 2.x.x to 1.5.x opencart version. Quote Link to comment Share on other sites More sharing options...
Guest ihos Posted December 22, 2015 Share Posted December 22, 2015 У кого то получилось настроить нормальную синхронизацию??? Quote Link to comment Share on other sites More sharing options...
Guest vadim Posted December 22, 2015 Share Posted December 22, 2015 У кого то получилось настроить нормальную синхронизацию??? У Алексея,двумя постами выше Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted January 11, 2016 Share Posted January 11, 2016 У кого то получилось настроить нормальную синхронизацию??? Если нужна помощь, пиши мне личные сообщения. Помогу. Quote Link to comment Share on other sites More sharing options...
Guest Shurx Posted January 28, 2016 Share Posted January 28, 2016 А с какой версией 1с работает данный модуль? У меня 8.2 Quote Link to comment Share on other sites More sharing options...
Guest borisovks Posted January 28, 2016 Share Posted January 28, 2016 Подскажите а будет работать с сервисом МойСклад? Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted January 29, 2016 Share Posted January 29, 2016 А с какой версией 1с работает данный модуль? У меня 8.2 У меня тоже. Работает 100% Quote Link to comment Share on other sites More sharing options...
Guest Shurx Posted January 31, 2016 Share Posted January 31, 2016 Странная штука. Если сливать с 1с с помощью логина и пароля, то товар не появляется, а вручную все работает. Где-то косяк в скрипта есть. Опенкарт 2.0.3.1, а 1с 8.2 Предприятие Quote Link to comment Share on other sites More sharing options...
Guest Алексей Posted February 1, 2016 Share Posted February 1, 2016 Если у вас поддомен, то ОдинС передавать инфу туда не будет. Если у вас есть ограничение в php.ini меньше чем нужно, при передаче файлов - не будет работать. Quote Link to comment Share on other sites More sharing options...
Guest Shurx Posted February 1, 2016 Share Posted February 1, 2016 В общем я разобрался. В скрипте есть косяки, после исправления все выгружается с ценами и количеством. 1с 8.2 УТ11 на Opencart 2.0.3.1 admin/model/tool/exchange1c.php Строка 1467. $query = $this->db->query("SHOW TABLES FROM ". DB_DATABASE ." LIKE '". DB_PREFIX ."manufacturer_description'"); На $query = $this->db->query("SHOW TABLES FROM `". DB_DATABASE ."` LIKE '". DB_PREFIX ."manufacturer_description'"); Строка 1015. if($product_id !==falseand $data['sky']!=''){ На if($product_id !==falseand $data['sku']!=''){ Строка 272. if(!$config_price_type_main['keyword']){ На if(!isset($config_price_type_main['keyword'])){ Найти и заменить: все seo_h1 на meta_h1 все seo_title на meta_title Н Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.