@smoln

Как правильно настроить выгрузку заказов в 1С?

Всем привет, пытаюсь сделать выгрузку заказов в 1С
При прямой ссылки 1c_exchange.php?type=sale&mode=query на экран в браузере выводится структура xml
в файле 1с_exchange.php run запускается где я только выбираю что посылает 1С и вывожу что нужно
функция toorder_1c() - выводит xml структуру из базы
public function run(){
 $mode = $this->mode;

if($mode=='query'){
$toordeer_1c=toorder_1c();
echo  htmlentities($toordeer_1c, ENT_QUOTES);
}
$this->$mode();
 }


В самом 1С заказов нет, но я их и не принимаю(возможно нужно с начало принять что то), мне нужно просто загрузить в 1С заказы, помогите решить вопрос
  • Вопрос задан
  • 1283 просмотра
Пригласить эксперта
Ответы на вопрос 3
@Xilian
Программист 1С, сетевые технологии, SQL
Ничего не понятно. Откуда и куда что должно выгружаться? Со стороны 1С загрузить xml не большая проблема.
Ответ написан
@smoln Автор вопроса
Вообщем есть такой пример я его поправил
В методе run я вызываю данные по порядку
1- авторизация
2 -проверка
3- загрузка заказов в 1С
Заказы выводятся структуре xml документа , то есть по ссылке напрямую query получаю структуру xml точно такую же как в примере

Подскажите что нужно делать дальше
class Exchange1c {
 
        private $mode;
        private $filename;
 
 
        public function __construct() {
                // принимаем значение mode
                $this->mode = $_GET['mode'];
                $this->filename = $_GET['filename'];
        }
 
        public function run(){
        $mode = $this->mode;

        if($mode=='checkauth'){
                echo "success\n";
                echo session_name()."\n";
                echo session_id()."\n";      
        }
        elseif($mode=='int'){
                $zip = extension_loaded('zip') ? 'yes' : 'no';
                echo 'zip='.$zip."\n";
                echo "file_limit=0\n";
        }

        elseif($mode=='query'){
 $ex=toorder_1c();
 //echo $ex;
 echo htmlentities($ex, ENT_QUOTES|ENT_HTML401);

        }


 $this->$mode();

        }//run
 
 
        /*
         * Этап 1. Авторизовываем 1с клиента
         */
        public function checkauth() {
                echo "success\n";
                echo session_name()."\n";
                echo session_id()."\n";
                exit;
        }
 
        /*
         * Этап 2. Говрим 1с, умеем или не умеем работать с архивами
         * в нашем случае - умеем :)
         */
        public function init() {
                $zip = extension_loaded('zip') ? 'yes' : 'no';
                echo 'zip='.$zip."\n";
                echo "file_limit=0\n";
                exit;
        }
 
        /*
         * Этап 3. Принимаем файл и распаковываем его
         */
        public function file() {
 
                // вытаскиваем сырые данные
                $data = file_get_contents('php://input');
 
                //Сохраняем файл импорта в zip архиве
                file_put_contents($this->filename, $data);
               
                // распаковываем
                if(file_exists($this->filename)) {
                        // работаем с zip
                        $zip = new ZipArchive;
                        //все в порядке с архивом?
                        if($res = $zip->open($this->filename, ZIPARCHIVE::CREATE)) {
 
                                // распаковываем два файла в формате xml куда-то
                                // в нашем случае в этот же каталог
                                $zip->extractTo(__DIR__);
                                $zip->close();
 
                                // удаляем временный файл
                                unlink($this->filename);
                                //Всё получилось?
                                echo "success\n";
                                exit;
                        }
                }
                // если ничего не получилось
                echo "failure\n";
                exit;
        }
 
        /*
         * Этап 3 
         */
        public function import() {
                // используем читалку xml
                $xml = simplexml_load_file($this->filename);
                if($xml && $this->filename == 'orders.xml') {
                        /// обрабатываете import.xml как простой xml
                        //Считываете данные, подключаетесь к своей БД, записываете и т.д
                        //во время работы скрипта можете отправлять progress
                        // если все успешно закончилось отправляете успех
                   echo "success\n";
                        echo session_name()."\n";
                        echo session_id()."\n";
                        exit;
 
                }
                else{
                        echo "Ошибка загрузки XML\n";
                        foreach (libxml_get_errors() as $error) {
                                echo "\t", $error->message;
                        }
                        exit;
                }
        }
		
		

		
		
		
		
 
}
session_start();
$exaple = new Exchange1c();
$exaple->run();
Ответ написан
Kewa2008
@Kewa2008
Программист
Для обмена информацией между 1С и внешним ПО в 1С есть замечательная технология - Web-сервисы. Решение твоей задачи кроется именно в этом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы