Comment on page
API синхронизации интернет-магазина с 1С
Иногда требуется создать собственную логику или существенно доработать существующую синхронизацию 1С с PHPShop. Вы можете воспользоваться PHPShop API, приведенном в этом руководстве.
В отличие от типового обмена, использующей формат обмена данными CommerceML, PHPShop использует более простой текстовый формат файлов CSV с разделением информации на файлы. Формат CommerceML состоит из двух файлов с русскоязычными XML тегами, что увеличивает размер транспортных файлов в сотни раз, а русскоязычные теги значительно уменьшают скорость выполнения операции и сильно нагружают сервер, значи тельно увеличивая стоимость хостинга.
Наш текстовый формат CSV делит транспортные файлы на отдельные части по 500-1000 позиций (задается в настройках обработки) и намного быстрее обрабатывается сервером, не перегружая его.
Получение данных о заказах с сайта и обновление статуса после загрузки в 1С
Данные о заказах на сайте можно получать в виде сформированного csv-файла фиксированной структуры (описание структуры Приложение №1) или с помощью реализованных на сайте API.
Для получения данных о заказах через API необходимо выполнить следующий запрос:
http://<ИмяСайта>/<ПапкаДанных>/loader.php?command=list&date1=<ДатаНачала>&date2=<ДатаОкончания>&num=<ЧислоЗаказов>&log=<Пользователь>&pas=<Пароль>
где:
- 1.«ИмяСайта» - наименование Вашего сайта;
- 2.«ПапкаДанных» - наименование папки служебных данных сайта. По-умолчанию 1cManager;
- 3.«ДатаНачала» - дата начала запроса в формате Unix-date;
- 4.«ДатаОкончания» - дата окончания запроса в формате Unix-date;
- 5.«ЧислоЗаказов» - максимальное число заказов в результате запроса;
- 6.«Пользователь» - имя пользователя для авторизации на сайте (должен иметь соответствующие привилегии);
- 7.«Пароль» - пароль пользователя для авторизации на сайте в кодированном виде (алгоритм Приложение №2).
Например:
http://demo.phpshop.ru/1cManager/loader.php?command=list&date1=1250640000&date2=1250726399&num=10&log=demo&pas=100O101O109OI1OI7OI5O101OI4OI50O
В качестве результата запроса будет информация о заказах в формате Приложение №1. В случае ошибок результатом будет «Error».
После загрузки заказов в 1С необходимо выполнить запрос на сайт с целью обновления статусов загруженных заказов:
http://<ИмяСайта>/<ПапкаДанных>/loader.php?command=update&id=<>ИД_заказа&cid=<НомерЗаказа1С>&log=<Пользователь>&pas=<Пароль>
где:
- 1.«ИмяСайта» - наименование Вашего сайта;
- 2.«ПапкаДанных» - наименование папки служебных данных сайта. По-умолчанию 1cManager;
- 3.«ИД_заказа» - id заказа на сайте, указан в секции «Начало личных данных» данных о зазазе (см. Приложение №1);
- 4.«НомерЗаказа1С» - номер созданного в 1С документа;
- 5.«Пользователь» - имя пользователя для авторизации на сайте (должен иметь соответствующие привилегии);
- 6.«Пароль» - пароль пользователя для авторизации на сайте в кодированном виде (алгоритм Приложение №1).
Например:
http://demo.phpshop.ru/1cManager/loader.php?command=update&id=224&cid=ТК000000035&log=demo&pas=100O101O109OI1OI50O
Выгрузка номеров счетов-фактур в интернет-магазин
На сайт можно выгружать формы созданных в 1С счетов-фактур по ранее загруженным заказам.+Для этого:
- 1.формируется список заказов, которые уже были загружены в 1С, но с-ф по которым не были выгружены на сайт:
http://<ИмяСайта>/<ПапкаДанных>/loader.php?command=check&date1=<ДатаНачала>&date2=<ДатаОкончания>&log=<Пользователь>&pas=<Пароль>
результатом будет строка с разделителем «;» из номеров 1С загруженных заказов; - 2.в 1С отбираются созданные с-ф по документам из п.1, формируются копии счетов в форматах html, xls, doc и копируются на ftp (либо в локальную папку);
- 3.изменяется статус заказов, для которых выгружены с-ф:
http://<ИмяСайта>/<ПапкаДанных>/loader.php?command=update &cid=<НомерЗаказа1С>&date=<ДатаСчета>&log=<Пользователь>&pas=<Пароль>
где: «ДатаСчета» - дата счет-фактуры в 1С.
Выгрузка товарной базы из 1С в интернет-магазин выполняется посредством транспортных файлов в формате CSV фиксированной структуры (Приложение №3).
Загрузка списка родительских групп товаров в интернет-магазин из 1С
На сайт из 1С можно выполнить загрузку списка родительских групп товаров через транспортный файл в формате CSV фиксированной структуры (Приложение №4).
Загрузка списка контрагентов в интернет-магазин из 1С
На сайт из 1С можно выполнить загрузку списка контрагентов через транспортный файл в формате CSV фиксированной структуры (Приложение №5).
Кроме «ручной» загрузки товаров на сайт через транспортный файл можно инициировать автоматическую загрузку с помощью реализованных на сайте API. Для это необходимо:
- 1.сформировать файлы с данными в установленном формате и скопировать их в одну папку;
- 2.выполнить запрос
http://<ИмяСайта>/<ПапкаДанных>/result.php?date=<ПапкаСФайлами>&files=all&log=<Пользователь>&pas=<Пароль>&create=true&create_category=true
где:- «ИмяСайта» - наименование Вашего сайта;
- «ПапкаДанных» - наименование папки служебных данных сайта. По-умолчанию 1cManager;
- ПапкаСФайлами – папка со сформированными файлами товарной базы;
- «Пользователь» - имя пользователя для авторизации на сайте (должен иметь соответствующие привилегии);
- «Пароль» - пароль пользователя для авторизации на сайте в кодированном виде (алгоритм Приложение №2);
- create=true – признак создания новых товаров, если товар по артикулу не был найден в базе данных;
- category=true – создавать новые, не найденные в базе данных каталоги.
Результат запроса будет строка с разделенными «;» именами файлов ранее не загруженных на сайт. - 3.Для каждого файла из списка в п.2 выполнить
http://<ИмяСайта>/<ПапкаДанных>/result.php?date=<ПапкаСФайлами>&files=<ИмяФайла>&log=<Пользователь>&pas=<Пароль>>&create=true&create_category=true
где: ИмяФайла – очередное имя файла из списка.
Начало личных данных
id;uid;datas;mail;name;campany;tel;oplata;sum;discount;inn;kpp
Начало заказанных товаров
id;uid;num;sum;
где в секции « Начало личных данных»:
- 1.id – id заказа;
- 2.uid – номер заказа;
- 3.datas – дата заказа (в формате Unix-date);
- 4.mail – почта заказчика;
- 5.name – контактное лицо;
- 6.campany – наименование организации (если заказчик юр.лицо);
- 7.tel – телефон;
- 8.oplata – тип оплаты;
- 9.sum – сумма заказа;
- 10.discount – скидка прописью;
- 11.inn – ИНН организации (если заказчик юр.лицо или ИП);
- 12.kpp – КПП организации (если заказчик юр.лицо или ИП).
где в секции «Начало заказанных товаров»:
- 1.id - id товара;
- 2.uid - артикул = код/артикул товара в 1С;
- 3.num - кол-во товаров в заказе;
- 4.sum – цена товара.
Функция мКодироватьПароль(Парам)
лСтрОбраб = СокрЛП(Парам);
лСтрКон = "";
Для й = 1 По СтрДлина(лСтрОбраб) Цикл
лСимв = Сред(лСтрОбраб, й, 1);
лЗн = ""+Формат(КодСимвола(лСимв),"ЧГ=0")+"O";
лСтрКон = лСтрКон + лЗн;
КонецЦикла;
лСтрКон = СтрЗаменить(лСтрКон, "11", "I");
лСтрКон = лСтрКон + "I10O";
Возврат лСтрКон;
КонецФункции
№ | Наименование поля | Описание |
1 | Артикул | Артикул товара |
2 | Наименование | Наименование товара |
3 | Краткое описание | Краткое описание товара |
4 | Маленькая картинка | Картинка товара |
5 | Подробное описание | Подробное описание товара |
6 | Большая картинка | Картинка товара |
7 | Остаток | Свободный складской остаток товара |
8 | Цена1 | Цена товара по типу цены №1 |
9 | Цена2 | Цена товара по т ипу цены №2 |
10 | Цена3 | Цена товара по типу цены №3 |
11 | Цена4 | Цена товара по типу цены №4 |
12 | Цена5 | Цена товара по типу цены №5 |
13 | Вес | Вес товара (для весовой номенклатуры) |
14 | Ед.измерения | Единица хранения остатков |
15 | ISO | Валюта товара |
16 | Category ID | Код родительской группы товара |
17 | Parent | Подчиненные товары |
18 | Характеристика [1-…...] | Наименование характеристики товара |
19 | Значение [1-…..] | Значения характеристики товара |
* Число видов и значений характеристик может варьироваться от 1 до 100
** Файл должен носить имя upload_X.csv для автоматического определения в магазине, где X - номер файла [1-100]
Для указания нескольких значений одной характеристики используется символ разделитель
&&
. Например:Красный&&Синий&&Зеленый
В поле Parent перечисляются через запятую 1С-коды подчиненных товаров (подтипов) у текущего главного товара, данные которого представлены в этой колонке. Например:
e3edf54d-fdab-11e7-82dd-3010b3ebd474,e3edf54e-fdab-11e7-82dd-3010b3ebd474
Если товар не имеет подтипов, то поле Parent остается
пустым
. Если товар является сам подтипом, то в поле Parent указывается данные в формате размер@цвет
. Например: 40@бежевый
Если у подтипа нет цвета, то указывается просто значение по дтипа, которое будет показываться перед добавлением в корзину. Например:
40
№ | Наименование поля | Описание |
1 | CatalogID | Код группы |
2 | Name | Наименование группы |
3 | Parent | Код родителя для текущей группы |
* Файл долж ен носить имя tree.csv для автоматического определения в магазине
№ | Наименование поля | Описание |
1 | Полное наименование | Полное наименование контрагента |
2 | ИНН | ИНН контрагента |
3 | КПП | КПП контрагента |
4 | Адрес | Адрес контрагента |
5 | Телефон | Телефон контрагента |
6 | Email | Электронный адрес контрагента |
7 | Контактное лицо | Основное контактное лицо контрагента |
* Файл должен носить имя
user.csv
для автоматического определения в магазинеВ отличии от 1С формат временной метки Unix time задается в целочисленном представлении. Его значение отсчитывается в секундах от полночи 1 января 1970 года по гринвичскому часовому поясу. Поэтому, для получения значения в формате Unix time необходимо добавить число секунд, прошедшее с нуля часов 01.01.1970 года. Реализация в 1С может выглядеть, например, следующим образом:
Функция ПеревестиДатуВЮниксФормат(ДатаВремя1С, Пояс)
ЧасыПояса = Число(Сред(Формат(Пояс,"ДФ=ЧЧ:мм"),1,2));
МинутыПояса = Число(Сред(Формат(Пояс,"ДФ=ЧЧ:мм"),4,2))/60;
Возврат ДатаВремя1С - '19700101' - (ЧасыПояса + МинутыПояса)*60*60;
КонецФункции
Функция ПеревестиДатуВ1СФормат(ДатаВремяЮникс, Пояс)
ЧасыПояса = Число(Сред(Формат(Пояс,"ДФ=ЧЧ:мм"),1,2));
МинутыПояса = Число(Сред(Формат(Пояс,"ДФ=ЧЧ:мм"),4,2))/60;
Дата1С = '19700101' + Число(ДатаВремяЮникс)+(ЧасыПояса+ МинутыПояса)*60*60;
Возврат Дата1С
КонецФункции
Все 1C-обработки (*.ert,*.epf.*.dll,*.exe) PHPShop предоставляются в виде скомпилированных файлов без исходных кодов согласно Лицензионному соглашению п 4.7
Last modified 1yr ago