Да, 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") {
// Сообщаем о результате выполнения операции отправки заказов с сайта
}
Мне в своё время очень помогла эта
ссылка