/**
  * Парсим реестр и генерируем счет-фактуры.
  * 
  * @param type $filename
  */
 public function parseFile($filename)
 {
     //@todo: это не красиво :(
     ini_set('max_execution_time', 300);
     //ini_set('memory_limit', '512M');
     $uri = WDCPREFIX_LOCAL . $this->path . $filename;
     $list = array();
     $ids = array();
     $handle = fopen($uri, 'r');
     while (($data = fgetcsv($handle, 1000, ';')) !== false) {
         if ($data[0] == 'order_id' || count($data) != 7) {
             continue;
         }
         //order_id;sf_num;sf_date;sf_summa;pp_num;pp_date;pp_type
         $res = array('id' => $this->getOrderId($data[0]), 'sf_num' => $data[1], 'sf_date' => $data[2], 'sf_summa' => $data[3], 'pp_num' => $data[4], 'pp_date' => $data[5], 'pp_type' => $data[6]);
         $ids[] = $res['id'];
         $list[] = $res;
     }
     fclose($handle);
     if ($list) {
         $reserveModel = ReservesModelFactory::getInstance(ReservesModelFactory::TYPE_TSERVICE_ORDER);
         $empData = $reserveModel->getEmpByReserveIds($ids);
         foreach ($list as $key => $data) {
             if (!isset($empData[$data['id']])) {
                 continue;
             }
             $data['employer']['login'] = $empData[$data['id']]['login'];
             $data['employer']['uid'] = $empData[$data['id']]['uid'];
             $reserveModel->getReserve($ids[$key]);
             $data['employer']['reqv'] = $reserveModel->getEmpReqv();
             try {
                 $doc = new DocGenReserves($data);
                 $doc->generateFactura();
             } catch (Exception $e) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/log.php';
                 $log = new log('reserves_docs/' . SERVER . '-%d%m%Y.log', 'a', '%d.%m.%Y %H:%M:%S: ');
                 $log->writeln(sprintf('Order Id = %s: %s', $data['id'], iconv('CP1251', 'UTF-8', $e->getMessage())));
             }
         }
     }
 }