@nik_91

Как синхронизировать с 1С самописную CMS?

Всем привет! Сейчас занимаюсь написанием своего модуля интеграции с 1С (решение - Управление нашей фирмой) с сайтом. Проблема в том, что админка сайта - полностью рукописная. Ранее делал синхронизацию в 1С Битрикс, сложностей особых не возникало. Просто взять модуль интеграции у Битрикса - вряд ли получится (да и законом скорее всего запрещено). Поэтому планирую писать своё решение. Кто сталкивался с этим подскажите, инициатором синхронизации является всегда 1С? По возможности может подскажете какие шаги нужно выполнить?
  • Вопрос задан
  • 212 просмотров
Решения вопроса 1
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
@sidni
Php Developer
Можно по старинке скидывать csv файл по FTP раз в какой то промежуток времени а со стороны сайта запускать крон который будет проверять наличии и последующей обработки файла
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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