Ответы пользователя по тегу PHP
  • Как синхронизировать с 1С самописную CMS?

    Kenigan
    @Kenigan
    Веб-программист
    Да, 1С является инициатором синхронизации. Она в заданные промежутки времени (можно раз в день, раз в минуту) посылает запрос на сайт для авторизации и начинает ему передавать данные и запрашивать заказы с сайта, если это необходимо. Можно еще делать единичную синхронизацию и потом вручную, когда необходимо, выполнять синхронизацию с сайтом. В любом из этих случаев порядок действий примерно такой должен быть:

    1. Создавайте папку в корне сайта, например, 1c, в ней должен лежать файл 1c_exchange.php (будет обрабатывать все запросы от 1С) и папка files (сюда будут приходить xml товаров из 1С)
    2. В 1С создать обмен с сайтом и указать путь к файлу, который будет обрабатывать все запросы с 1С. Например, mysite.ru/1c/1c_exchange.php.
    3. Там же вписать пользователя и пароля, который будет проверяться в файле 1c_exchange.php.

    В файле 1c_exchange.php будут выполняться примерно такие шаги:
    // Тут 1C передает всю информацию о товарах на сайт
    if($_GET["mode"] == "checkauth" && $_GET["type"] == "catalog") {
    	// Тут проверить, верный ли логин и пароль заполнен в настройках 1С обмена
    } elseif ($_GET["mode"]=="init" && $_GET["type"] == "catalog") {
    	// Тут передать информацию о сервере (используется ли архивация и какой максимальный размер файла)
    } elseif ($_GET["mode"] == "file" && $_GET["type"] == "catalog") {
    	// Тут принимаем файлы, приходящие из 1С, сохраняем у себя в папке files. 
    	// Файлы могут быть 5-ти типов (может и больше)
    	// информация о разделах каталога (catalog.xml),
    	// информация о товарах (goods.xml),
    	// информация о характеристиках (торговых предложениях) (offers.xml),
    	// информация о ценах (price.xml),
    	// информация об остатках (rests.xml).
    } elseif ($_GET["mode"] == "import" && $_GET["type"] == "catalog") {
    	// Тут отдать успех или неудачу передачи файлов
    } elseif ($_GET["mode"]=="complete" && $_GET["type"] == "catalog") {
    	// При завершении операции импорта парсим все данные и заносим информацию на сайт
    }
    	
    // Тут 1C запрпшивает заказы с сайта
    if($_GET["mode"] == "checkauth" && $_GET["type"] == "sale") {
    	// Тут проверить, верный ли логин и пароль заполнен в настройках 1С обмена
    } elseif ($_GET["mode"]=="init" && $_GET["type"] == "sale") {
    	// Тут передать информацию о сервере (используется ли архивация и какой максимальный размер файла)
    } elseif ($_GET["mode"]=="query" && $_GET["type"] == "sale") {
    	// Если имеются заказы на сайте, которые еще не отправлялись в 1С, отправляем их тут. Формат такой http://v8.1c.ru/edi/edi_stnd/131/from.xml
    } elseif ($_GET["mode"]=="success" && $_GET["type"] == "sale") {
    	// Сообщаем о результате выполнения операции отправки заказов с сайта
    }


    Мне в своё время очень помогла эта ссылка
    Ответ написан
    1 комментарий