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

Не все категории загружаются.

Заранее благодарен.