Jump to content

Импорт из 1С товаров и категорий


Recommended Posts

Задача следующая. есть 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

  • 3 weeks later...
×
×
  • Create New...