Taekun Posted July 2, 2012 Share Posted July 2, 2012 Задача следующая. есть 1С 8.2 конфа розница 2.0. Так же есть Prestashop 1.4.8.2 Модуль для выгрузки из 1С выгружает xml файлы. отдельно категории и отдельным файлом товары. Общее количество категорий около 322. Общее количество товаров 3750 позиций. При попытке выгрузить через CSV Import выгружается не все товары. Встал вопрос автоматизировать данный процесс и сделать через 1С. Взял модуль для 1.3 от ors И начала переделывать. Так как его модуль рассчитан на стандартную выгрузку/загрузку для сайта от 1С то она мне не подходила. итак Вопрос: Получаю xml файл с содержимым: Код: <Категория> <Ид>36</Ид> <Уид>b6868ff4-b78a-11e1-a88a-dca971152d62</Уид> <Наименование>Категория №1</Наименование> <ИдРодитель>1</ИдРодитель> <Родитель>HOME</Родитель> </Категория> <Категория> <Ид>37</Ид> <Уид>b6868ff5-b78a-11e1-a88a-dca971152d62</Уид> <Наименование>Категория №2</Наименование> <ИдРодитель>36</ИдРодитель> <Родитель>Категория №1</Родитель> </Категория> С товарами таже ситауация. Но трудности с добавлением в базу. Вот что у меня Код: <?php define('FIX_ZIP' , 'yes'); // true - использовать zip сжатие при получении файлов define('FIX_ZIPSIZE' , 2048000); // размер арива zip в байтах ini_set('display_errors', '1');error_reporting(E_ALL); include(dirname(__FILE__).'/../../config/config.inc.php'); require_once(dirname(__FILE__).'/../../init.php'); require_once(dirname(__FILE__).'/../../images.inc.php'); require_once 'KLogger.php'; $log = new KLogger("log_connect.log"); $log->LogInfo($_SERVER['QUERY_STRING']); $defaultLanguage = new Language((int)(Configuration::get('PS_LANG_DEFAULT'))); $categors = array(); function loadfile() { ..... } function unzip($file,$folder='') { ....... } function ClearBase() {....} function productswork() { global $log; $log->LogInfo('PRODlogWorks'); $xml = simplexml_load_file(_PS_PROD_PIC_DIR_ . 'import_products.xml'); foreach($xml->Продукты->Продукт as $prod) { workprod($prod); } Db::getInstance()->Execute(" INSERT IGNORE INTO `"._DB_PREFIX_."category_product`(`id_product`,`id_category`) SELECT id_product,id_category_default FROM `"._DB_PREFIX_."product` "); } function workprod($product) { global $categors, $log; if (!empty ($id_product)){ Db::getInstance()->Execute(" UPDATE `"._DB_PREFIX_."product` SET `reference`='".$product->Артикул."', `date_upd`=NOW() WHERE `id_product`= ".$id_product ); Db::getInstance()->Execute(" UPDATE `"._DB_PREFIX_."product_lang` SET `name`='".$product->Наименование."', `description_short`='".$product->ПолноеНаименование."' WHERE `id_lang`=3 AND `id_product`= ".$id_product ); } else {*/ //Добавляем $log->LogInfo("prod"); Db::getInstance()->Execute(" INSERT INTO `"._DB_PREFIX_."product` (`xml`,`reference`,`id_category_default`,`date_add`,`date_upd`,`active`) VALUES ('".(int)$product->Ид."', '".$product->Артикул."' , ".(int)$product->ИдРодитель.", NOW(), NOW(), 1) "); $id_product=Db::getInstance()->Insert_ID(); Db::getInstance()->Execute(" INSERT INTO `"._DB_PREFIX_."product_lang` (`id_product`,`id_lang`, `name`,`description_short`,`link_rewrite`) VALUES (".$id_product.", 6, '".$product->Наименование."', '".$product->Описание."', '".Tools::link_rewrite($product->Наименование)."') "); Db::getInstance()->Execte(" INSERT IGNORE INTO `"._DB_PREFIX_."category_product`(`id_product`,`id_category`) SELECT id_product,id_category_default FROM `"._DB_PREFIX_."product` "); return $id_product; } function categoryswork() { $categorys = array('Id','Uid','Name','IdParent','Parent'); global $log; $index = 1; $log->LogInfo('CATAlogWorks'); $xml = simplexml_load_file(_PS_PROD_PIC_DIR_ . 'import_categorys.xml'); foreach($xml->Категории->Категория as $categor) { $level = 1; $log->LogInfo('Level: 1'); Db::getInstance()->Execute(" INSERT INTO `"._DB_PREFIX_."category` (`xml`,`id_parent`,`level_depth`,`date_add`,`date_upd`,`active`) VALUES ('".(int)$categor->Уид."', ".(int)$categor->ИдРодитель.", ".$level." , NOW(), NOW(), 1) "); $id_category=Db::getInstance()->Insert_ID(); Db::getInstance()->Execute(" INSERT INTO `"._DB_PREFIX_."category_lang` (`id_category`,`id_lang`, `name`,`link_rewrite`) VALUES (".(int)$categor->Ид.", 6, '".$categor->Наименование."', '".Tools::link_rewrite($categor->Наименование)."') "); } else { $level = 2; $log->LogInfo('Level: 2'); Db::getInstance()->Execute(" INSERT INTO `"._DB_PREFIX_."category` (`xml`,`id_parent`,`level_depth`,`date_add`,`date_upd`,`active`) VALUES ('".(int)$categor->Уид."', ".(int)$categor->ИдРодитель.", ".$level." , NOW(), NOW(), 1) "); $id_category=Db::getInstance()->Insert_ID(); Db::getInstance()->Execute(" INSERT INTO `"._DB_PREFIX_."category_lang` (`id_category`,`id_lang`, `name`,`link_rewrite`) VALUES (".(int)$categor->Ид.", 6, '".$categor->Наименование."', '".Tools::link_rewrite($categor->Наименование)."') "); } Db::getInstance()->Execute(" INSERT IGNORE INTO `"._DB_PREFIX_."category_group`(`id_category`,`id_group`) SELECT id_category, FROM `"._DB_PREFIX_."category` "); } } if (Tools::getValue('type')== 'catalog') { if (Tools::getValue('mode') == 'export') //?type=catalog&mode=export { print 'success\n'; } if (Tools::getValue('mode') == 'init') //?type=catalog&mode=init { print "zip=" . FIX_ZIP . "\n" . FIX_ZIPSIZE; } if (Tools::getValue('mode')== 'checkauth') //?type=catalog&mode=checkauth { $log->LogInfo($_SERVER["PHP_AUTH_USER"]); $log->LogInfo($_SERVER["PHP_AUTH_PW"]); print "success\n"; } if (Tools::getValue('mode') == 'file' && Tools::getValue('filename')) //?type=catalog&mode=file&filename=import.xml { print loadfile() . "\n"; } if (Tools::getValue('mode') == 'import') { ClearBase(); categoryswork(); productswork(); } print "success\n"; } Вроде все правильно но после импорта в базе есть не все товары некоторые без наименование и потом они не в категориях даже не в домашней. И категории вроде все есть и все правильно но когда заходиш в monitoring это просто жуть. Подскажите в чем трудность. П.С. пробовал даже через $Category = New Category(); ...... $Category->add(); Не все категории загружаются. Заранее благодарен. Link to comment Share on other sites More sharing options...
savvato Posted July 18, 2012 Share Posted July 18, 2012 (edited) качайте, может функционал бесплатной версии устроит Если необходимы доделки под Вас лично пишите в ПМ вышлю контакты, обсудим) Edited July 19, 2012 by savvato (see edit history) Link to comment Share on other sites More sharing options...
savvato Posted July 20, 2012 Share Posted July 20, 2012 (edited) Модуль для выгрузки из 1С выгружает xml файлы. отдельно категории и отдельным файлом товары. и поделитесь обработкой плз, если не жалко) Edited July 21, 2012 by savvato (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts