@calvin_orange

Как настроить сервер чтобы принимать XML из 1С без Битрикса и др. CMS?

Необходимо настроить получение данных (список товаров, стоимость, остаток на складе) из 1С на сайт.
На сайте нет Битрикса и нет продуктов 1С.

В связи с этим интересуют следующие моменты:
1. Каким образом можно настроить сервер, чтобы он мог принимать XML из стандартного обмена данными с веб-сайтом?
Какой должен быть ответ у сервера чтобы 1С передал XML с данными из функции программы "Стандартный обмен данными с веб-сайтом"?

2. Передает ли посредством обмена данными 1С еще какие-либо данные на сервер кроме XML файла?
  • Вопрос задан
  • 1099 просмотров
Пригласить эксперта
Ответы на вопрос 2
Maksclub
@Maksclub
maksfedorov.ru
1. Вот как работает скрипт на php (он один) по стандарту CommerceML (это тот который стандартный в Битриксе) в движке Simpla
https://github.com/pikusov/Simpla/blob/master/simp...
скрипт грузит товары с категориями (import), и предложения (offers) и картинки, также отдает по запросу от 1С ей заказы

2. Картинки еще как правило передаются, но это не всегда....

Понятное дело, что работает по определенную стуктуру БД
Ответ написан
Комментировать
Принять файлы через стандартный механизм обмена товарами не сложно. Пример скрипта приложил. Далее в каталог она вам пришлет 2 xml файла и картинки, проходитесь по ним и складываете куда требуется. Вот только значительно сложнее дела обстоят если вы захотите и счета пробрасывать через этот же стандартный механизм обмена
пример php скрипта
$user	= "1c_user";
        $pass	= "1c_pass";
        $path	= "upload/";

        if (!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER["PHP_AUTH_PW"]) && !isset($_REQUEST["type"])) {
            header('WWW-Authenticate: Basic realm="1C-Exchange"');
            header('HTTP/1.0 401 Unauthorized');
            $_SESSION["login"] = false;
            die("failure");
        }

        if (($_SERVER["PHP_AUTH_USER"] == $user && $_SERVER["PHP_AUTH_PW"] == $pass) || $_SESSION["login"]) {
            $_SESSION["login"] = true;
            if ($_REQUEST["type"] == "catalog") {
                switch ($_REQUEST["mode"]):
                    case "checkauth":
                        die("success");
                        break;
                    case "init":
                        die("zip=no" . "\r\n" . "file_limit=0");
                        break;
                    case "file":
                        $filename = (strpos($_REQUEST["filename"], ".") == 0) ? substr($_REQUEST["filename"], 1) : $_REQUEST["filename"];
                        $dirname = dirname($path . $filename);
                        if (!is_dir($dirname))
                            mkdir($dirname, 0755, true);
                        $file = fopen($path . $filename, 'ab') or die("failure");
                        fwrite($file, file_get_contents('php://input'));
                        fclose($file);
                        die("success");
                        break;
                endswitch;
            }
            if ($_REQUEST["type"] == "sale") {

            }
        } else {
            header('WWW-Authenticate: Basic realm="1C-Exchange"');
            header('HTTP/1.0 401 Unauthorized');
            $_SESSION["login"] = false;
            die("failure");
        }

Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы