<?
// класс для импорта данных из файла XML 1C во временную таблицу
// данные переносятся как есть, заголовки таблицы будут использованы как названия столбцов
// отличие от  i_xml_to_db_import - в файле 1С блоки по сотруднику находтся в блоке "data"
include_once('i_xml_esmo_to_db_import.php');
class i_xml_1c_to_db_import extends i_xml_esmo_to_db_import
{
    var $current_MessageNumber ;
    // получаем заголовки XLS файла и сохраняем в массив
    function parse_headers()
    {  if (is_object($this->XML))
        {  foreach($this->XML->Data->children() as $item)
           { $rec=(array)$item ;
             foreach($rec as $key=>$value)
             {   $this->arr_XLS_cols_names[$key]=$key ;  // первая строка - заголовки
                 $this->arr_XLS_cols_DB[$key]=$this->check_db_fields_names($key) ;  // первая строка - заголовки
             }
           }
        }
        //damp_array($this->arr_XLS_cols_names,1,-1) ;
        //damp_array($this->arr_XLS_cols_DB,1,-1) ;
        $this->flog_append('parse_XML_headers') ;
    }

   // переносим данные из ИСТОЧНИКА в таблицу soap_xml_block в формате "как есть"
   function parse_XML_to_temp_table()
   {   $this->flog_append('parse_xls_to_temp_table start') ;
       ?>Переносим данные в во временную таблицу<br><?
       if (is_object($this->XML))
       {   $this->current_MessageNumber=(int)$this->XML->MessageNumber ;
           $this->flog_append('XML parser начинаем читать данные файла') ;
           $row=0 ;  $row_all=_sizeof($this->XML->Data->children()) ;
           foreach($this->XML->Data->children() as $item)
           { $arr_item=(array)$item ;
             $data=array() ;
             // необходимо идти по заранее подготовлено списоку столбцов, так как в объекте могут быть не все поля
             if (_sizeof($this->arr_XLS_cols_DB)) foreach($this->arr_XLS_cols_DB as $source_fname=>$fname) $data[$fname]=$arr_item[$source_fname] ;
             $row++ ;
             //damp_array($data) ;
             multiSQL_insert($this->table)->append($data) ;
             $this->flog_append('прочитана строка '.$row.' из '.$row_all) ;
           }
           multiSQL_insert($this->table)->flush() ;

           echo 'Прочитано строк файла XML: <strong>'.$row.'</strong><br>' ;
           echo 'Cохранено строк с данными: <strong>'.$row_all.'</strong></br>' ;

           $this->flog_append('all read line: '.$row_all) ;
           $this->row_import=$row ;
       }
       else $this->flog_append('Не удалось прочитать XLS файл') ;
       $this->flog_append('parse_xls_to_temp_table end') ;
    }

}

?>
