Всем приветы!
Ребят, измучился весь уж.
Подскажите как сделать обмен 1с с сайтом.
Если не жалко киньте примеров.
Касательно Google и Yandex я уже искал.
К сожалению ничего не нашел подходящего, либо я лошара =)))
Как говориться помогите кто чем может =)))
ps: Версия 1С 8.3
1. BespredeL - 04 Февраля, 2015 - 11:29:09 - перейти к сообщению
2. skiphog - 04 Февраля, 2015 - 17:24:10 - перейти к сообщению
Код с примером внизу поста
--
Для работы с обменом 1С и вашим сайтом, нужно хотя бы маломальски уметь работать с xml.
Особых знаний не нужно, нужно только взять файл, прочитать, пробежать в цикле по узлам и занести в базу нужные данные.
Протокол обмена данными и как все происходит, почитать можно здесь http://v8[dot]1c[dot]ru/edi/edi_stnd/131/
Далее немного рассмотрим только обмен товаров на сайт. Рассматривать обмен заказами не будем, т.к. если поймете обмен товарами, то с обменом заказов проблем не будет.
Сначала создайте у вас на сайте php файлик(допустим 1c_exchange.php) для обмена данных и каталог, куда будете загружать файлы обмена.
В 1с настройте обмен данными с web-сайтом. Указав какие товары, цены, остатки будете выгружать.
Отмечайте чекбокс - Выгрузка товаров.
В поле Адрес сайта укажите путь http://site.ru/1c_exchange.php
Логин и пароль пока оставьте пустым.
Сам процесс. Простыми словами.
Обмен товаров происходит в 4 этапа. На каждом этапе 1С будет отправлять разные http-запросы, и ждать ответ от сервера.
1. Начало сеанса
1С пуляет вам http-запрос запрос на аторизацию: /1c_exchange.php?type=catalog&mode=checkauth
*type=catalog - говорит о том, что будет осуществляться выгрузка товаров.
*mode=checkauth - запрос на авторизацию.
Естественно все это дело попадет в массив $_GET.
Далее 1с ждет ответ от сервера в виде строки success или failure
Если вы не проверяете на логин и пароль и не указываете их в 1С, просто отправьте обратно строку echo "success\n";
Если вы хотите работать с авторизацией, то логин и пароль будет лежать в $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'];
Достаете, проверяете на соответствие и оправляете ответ.
Если 1C получает success,- продолжает процесс.
2. Запрос параметров от сайта
1С пуляет вам http-запрос запрос : /1c_exchange.php?type=catalog&mode=init
Тут она спрашивает, умеет ли ваша система работать с zip архивами?
PHP прекрасно работает с ZIP, поэтому отвечаем 1C - zip=yes
Иначе, 1с будет загружать файлы не в архиве.
3. Выгрузка на сайт файлов обмена
1С пуляет вам http-запрос запрос : /1c_exchange.php?type=catalog&mode=file&filename=<имя файла>
На этом этапе принимаем файл, распаковываем его. Достаем из архива два xml файла.
import.xml и offers.xml
отвечаем 1С success, ну и соответственно failure, если что-то не получилось.
И начинается самая важная часть.
4.1 Пошаговая загрузка каталога
1С пуляет вам http-запрос запрос : /1c_exchange.php?type=catalog&mode=import&filename=<имя файла>
В <имя файла> будет храниться значение import.xml
На этом этапе вы берете файл import.xml и начинаете его парсить.
Как известно, самая простая читалка - это simpleXml, но здесь на ваш вкус и цвет
Читаете файл, берете данные, записываете себе в базу данных.
Здесь лирическое отступление и вот на что стоит обратить внимание.
1с формирует 2 файла для отправки import и offers
В import она кладет каталоги(категории), товары, а в offers - цены и всякие опции....цвет, размер и т.д.
Естественно у каждой категории и товара 1с дает уникальный идентификатор, по которому идет связь.
НО!
Версии 1с могут отличаться и может случиться так, что выгрузка будет разная, все будет наоборот. Цены с товарами в import, а каталоги в offers.
В общем, перед выгрузкой изучите эти файлы и переделайте загрузчик под себя.
И так. Как только вы распарсили первый файл. отдаем 1с ответ success
4.2 Пошаговая загрузка каталога
Здесь 1С пуляет вам http-запрос запрос : /1c_exchange.php?type=catalog&mode=import&filename=<имя файла>
где <имя файла> уже offers.xml
Точно так же берем файл. Парсим, вставляем в базу.
И говорим 1Ске success
Всё. На этом весь процесс заканчивается и 1С говорит вам - Выгрузка товаров успешно завершена
Привожу пример. Файлик 1c_exchange.php, в котором все происходит.
Оформил в виде простого класса, да бы было все более менее понятно.
Реализация ни в коем случае не претендует на боевые условия, сделан специально для понимания. Хотя вполне себе рабочий вариант, можно поиграться Аторизовывает, скачивает файлы, распаковывает. Но ничего не парсит, а эмулирует success))))
--
Для работы с обменом 1С и вашим сайтом, нужно хотя бы маломальски уметь работать с xml.
Особых знаний не нужно, нужно только взять файл, прочитать, пробежать в цикле по узлам и занести в базу нужные данные.
Протокол обмена данными и как все происходит, почитать можно здесь http://v8[dot]1c[dot]ru/edi/edi_stnd/131/
Далее немного рассмотрим только обмен товаров на сайт. Рассматривать обмен заказами не будем, т.к. если поймете обмен товарами, то с обменом заказов проблем не будет.
Сначала создайте у вас на сайте php файлик(допустим 1c_exchange.php) для обмена данных и каталог, куда будете загружать файлы обмена.
В 1с настройте обмен данными с web-сайтом. Указав какие товары, цены, остатки будете выгружать.
Отмечайте чекбокс - Выгрузка товаров.
В поле Адрес сайта укажите путь http://site.ru/1c_exchange.php
Логин и пароль пока оставьте пустым.
Сам процесс. Простыми словами.
Обмен товаров происходит в 4 этапа. На каждом этапе 1С будет отправлять разные http-запросы, и ждать ответ от сервера.
1. Начало сеанса
1С пуляет вам http-запрос запрос на аторизацию: /1c_exchange.php?type=catalog&mode=checkauth
*type=catalog - говорит о том, что будет осуществляться выгрузка товаров.
*mode=checkauth - запрос на авторизацию.
Естественно все это дело попадет в массив $_GET.
Далее 1с ждет ответ от сервера в виде строки success или failure
Если вы не проверяете на логин и пароль и не указываете их в 1С, просто отправьте обратно строку echo "success\n";
Если вы хотите работать с авторизацией, то логин и пароль будет лежать в $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'];
Достаете, проверяете на соответствие и оправляете ответ.
Если 1C получает success,- продолжает процесс.
2. Запрос параметров от сайта
1С пуляет вам http-запрос запрос : /1c_exchange.php?type=catalog&mode=init
Тут она спрашивает, умеет ли ваша система работать с zip архивами?
PHP прекрасно работает с ZIP, поэтому отвечаем 1C - zip=yes
Иначе, 1с будет загружать файлы не в архиве.
3. Выгрузка на сайт файлов обмена
1С пуляет вам http-запрос запрос : /1c_exchange.php?type=catalog&mode=file&filename=<имя файла>
На этом этапе принимаем файл, распаковываем его. Достаем из архива два xml файла.
import.xml и offers.xml
отвечаем 1С success, ну и соответственно failure, если что-то не получилось.
И начинается самая важная часть.
4.1 Пошаговая загрузка каталога
1С пуляет вам http-запрос запрос : /1c_exchange.php?type=catalog&mode=import&filename=<имя файла>
В <имя файла> будет храниться значение import.xml
На этом этапе вы берете файл import.xml и начинаете его парсить.
Как известно, самая простая читалка - это simpleXml, но здесь на ваш вкус и цвет
Читаете файл, берете данные, записываете себе в базу данных.
Здесь лирическое отступление и вот на что стоит обратить внимание.
1с формирует 2 файла для отправки import и offers
В import она кладет каталоги(категории), товары, а в offers - цены и всякие опции....цвет, размер и т.д.
Естественно у каждой категории и товара 1с дает уникальный идентификатор, по которому идет связь.
НО!
Версии 1с могут отличаться и может случиться так, что выгрузка будет разная, все будет наоборот. Цены с товарами в import, а каталоги в offers.
В общем, перед выгрузкой изучите эти файлы и переделайте загрузчик под себя.
И так. Как только вы распарсили первый файл. отдаем 1с ответ success
4.2 Пошаговая загрузка каталога
Здесь 1С пуляет вам http-запрос запрос : /1c_exchange.php?type=catalog&mode=import&filename=<имя файла>
где <имя файла> уже offers.xml
Точно так же берем файл. Парсим, вставляем в базу.
И говорим 1Ске success
Всё. На этом весь процесс заканчивается и 1С говорит вам - Выгрузка товаров успешно завершена
Привожу пример. Файлик 1c_exchange.php, в котором все происходит.
Оформил в виде простого класса, да бы было все более менее понятно.
Реализация ни в коем случае не претендует на боевые условия, сделан специально для понимания. Хотя вполне себе рабочий вариант, можно поиграться Аторизовывает, скачивает файлы, распаковывает. Но ничего не парсит, а эмулирует success))))
Спойлер (Отобразить)
Вот и всё.
За ошибки и кривое повествование простите. Если что-то непонятно - пишите в личку