Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Подскажите с 1С
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Подскажите с 1С

Страниц (1): [1]
 

1. BespredeL - 04 Февраля, 2015 - 11:29:09 - перейти к сообщению
Всем приветы!
Ребят, измучился весь уж.
Подскажите как сделать обмен 1с с сайтом.
Если не жалко киньте примеров.

Касательно Google и Yandex я уже искал.
К сожалению ничего не нашел подходящего, либо я лошара =)))

Как говориться помогите кто чем может =)))

ps: Версия 1С 8.3
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))))
Спойлер (Отобразить)


Вот и всё.
За ошибки и кривое повествование простите. Если что-то непонятно - пишите в личку Улыбка
3. BespredeL - 20 Февраля, 2015 - 12:31:10 - перейти к сообщению
Большое спасибо за помощь =))
разобрался =)))

skiphog пишет:
Код с примером внизу поста
--

Для работы с обменом 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))))
Спойлер (Отобразить)


Вот и всё.
За ошибки и кривое повествование простите. Если что-то непонятно - пишите в личку Улыбка
4. smoln - 07 Июня, 2018 - 17:54:11 - перейти к сообщению
А можете дописать еще и на загрузку и выгрузку заказов с сайта
5. samson14 - 23 Сентября, 2019 - 09:14:56 - перейти к сообщению
skiphog подскажите а как принять этот запрос из 1с, я должен сделать case какой то на авторизацию или как?

 

Powered by ExBB FM 1.0 RC1