Синхронизация с 1С

Материал из MstarProject Manual
Перейти к: навигация, поиск

Модуль предназначен для синхронизации данных между сайтом и вашей конфигурацией 1С версии 8.

Протокол синхронизации описан по ссылке

Модуль разрабатывается индивидуально для каждого заказчика и при тесном сотрудничестве с вашим программистом 1С.

Синхронизация сайта с 1С можно проводить посредством двух форматов либо через XML либо через JSON

При обмене данными инициатором обмена выступает 1С. Рассмотрим основные моменты при синхронизации посредством обоих форматов:


Синхронизация в формате XML

Инициализация

В начале сеанса 1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&mode=checkauth и передает

значение логина и пароля менеджера 1С. Этот менеджер создается в Мпанели и используется только для авторизации 1С.

Уточнение параметров сеанса http://example.mstarproject.com/?action=exchange&type=sale&mode=init

example.mstarproject.com -заменить на адрес проекта.

Весь обмен происходит в кодировке UTF8. (Но по просьбе заказчика можно рассмотреть изменение кодировки на другую).

В конце любой операции выдается или success - успешное выболнение, или failure - ошибка.


Передача из сайта в 1С (экспорт)

Бренды

1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&mode=brands

В ответ передается файл с данными о брендах (производителях), следующей структуры:

<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
  <Бренды>
    <Бренд 
             Номер="1"		                    // Ид производителя на сайте
	  Название="1afirstautomotive"  // Название производителя 
	  Префикс="AAB"                         // Внутренний код производителя
    />
    <Бренд 
             Номер="..."		                    
	  Название="...."  
	  Префикс="...."                         
     />
  </Бренды>
</КоммерческаяИнформация>

Товары (прайс)

1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&mode=price

В ответ передается файл с данными о товарах (прайсах), следующей структуры:

<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
  <Товары>
   <Товар 
      Код="1" 					// Ид товара на сайте 
      Название="Важіль підвіски" 		// Название товара
      КодПоставщика="1312" 		// Ид поставщика на сайте
      Артикул="SA4791L" 			// Артикул товара
      Описание="" 				// Описание товара
      ПрефиксКод="CMW_SA4791L" 	// Внутренний код производителя + артикул товара
      Производитель="555" 			// Название производителя
      Количество="2"				// Количество товара
      Цена="936.78" 				// Цена товара
   />
  </Товары>
</КоммерческаяИнформация>
* стоит ограничение в 5 записей, так как данный метод нужно корректировать ввиду большого количества записей.

Поставщики

1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&mode=providers

В ответ передается файл с данными о поставщиках , следующей структуры:

<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
  <Поставщики>
    <Поставщик 
      Номер="1312" 		// Ид поставщика на сайте
      Название="elit" 		// Название поставщика
      Описание="elit" 		// Описание
      КодовоеНазвание="elit"  // Кодовое название поставщика
      Страна="" 			// Страна
      Город="" 			// Город
      Адрес="" 			// Адрес
      Телефон="" 			// Телефон поставщика
      Логин="elit"		// Логин поставщика 
      Почта="elit@mail.ua" 	// Почта поставщика
      СрокПоставки="0" 		// Срок поставки товара поставщиком
      Наценка="Наценка 0" 	// Наценка поставщика
      Примечания="" 		// Примечания
      Идентификатор1С=""	// Ид поставщика в 1С
    />	
  <Поставщики>
</КоммерческаяИнформация>

Контрагенты

1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&mode=customers

В ответ передается файл с данными о контрагентах , следующей структуры:

<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
  <Контрагенты>
    <Контрагент 
      Номер="6" 			// Ид контрагента на сайте			
      Идентификатор1С="" 	// Ид контрагента в 1С
      ФИО="RosarioFep" 		// ФИО
      Логин="RosarioFep" 	// Логин контрагента
      Почта="era@market.ru" 	// Почта контрагента
      Телефон="87191848937" 	// Телефон контрагента
      Город="Sembawang" 	// Город
      Адрес="Sembawang" 	// Адрес
      ДатаРегистрации="2018-01-21 01:41:36" // Дата регистрации
      ДатаПоследнегоВизита="2018-01-21 01:41:37"// Дата последнего визита  
      Примечания="" 				// Примечания
      ТипПользователя="частное лицо"	// Тип контрагента (юр./ физ.)
    />
  <Контрагенты>
</КоммерческаяИнформация>

Заказы

1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&mode=orders

В ответ передается файл с данными о заказах , следующей структуры:

<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
<Заказы>
  <Заказ 
    НомерЗаказа="174"			// Ид заказа на сайте
    НомерЗаказа1C="" 			// Ид заказа в 1С
    ДатаЗаказа="2020-07-22" 		// Дата заказа
    ВремяЗаказа="08:42:21" 		// Время заказа
    СуммаЗаказа="41.00" 		// Сумма заказа
    СпособОплаты="Наличными" 		// Способ оплаты
    Доставка="Самовывоз" 		// Способ доставки
    ИдМенеджера="1" 			// Ид менеджера на сайте
    СтатусЗаказа="new" 			// Статус заказа
   >
      <Контрагент 			// Данные о заказчике
	Номер="1322" 			// Ид контрагентa на сайте
	ФИО="" 				// ФИО
	Идентификатор1С="" 		// Ид контрагентa в 1С
	Логин="0326552353" 		// Логин контрагентa
	Почта="" 				// Почта контрагентa 
	Телефон="(032)6552353" 		// Телефон контрагентa
	Город="" 				// Город
	Адрес=""				// Адрес
      />
    <Товары>				// Данные о товарах в заказе
      <Товар 
	  Ид="755" 				// Ид позиции в заказе на сайте
	  Код="WL7129" 			// Артикул товара
	  Цена="40.82" 			// Цена продажи товара
	  ЗакупочнаяЦена="1.42" 	// Закупочная цена	
	  Количество="1" 			// Количество товара
 	  Сумма="40.82" 			// Сумма продажи товара 
	  КомментарийМереджера="" 	// Комментарий менеджера
	  СрокПоставки="0" 		// Срок поставки товара
	  СтатусТовара="pending" 	// Статус позиции в заказе на сайте
	  КодПоставщика="1315" 		// Ид поставщика товара
	  Постaвщик="vladislav" 	// Название поставщика
	  ПрефиксКод="AWP_WL7129"	// Внутренний код производителя + артикул товара 
	  Префикс="AWP" 			// Внутренний код производителя
	  Производитель="wixfilters" 	// Название производителя
	  Название="WIX WL7129 = FN OP570"// Название товара  
	/>
     </Товары>
  </Заказ>
</Заказы>
</КоммерческаяИнформация>

В данный момент передаются все заказы со статусом «Новый».

Cтатусы заказа:
"Новый"="new"
"Приостановлен"="pending"
"В работе"="work"
"Выдано"="end"
"Отказано"="refused"

Статусы товаров в заказе:
"В работе"="work"
"Подтвержден"="confirmed"
"В пути"="road"
"На складе"="store"
"Выдано"="end"
"Отказано"="refused"

Передача из сайта в 1С (импорт)

1) Начало сеанса http://example.mstarproject.com/?action=exchange&type=catalog&mode=checkauth

2) Уточнение параметров сеанса http://example.mstarproject.com/?action=exchange&type=catalog&mode=init

3) Выполнить запрос http://example.mstarproject.com/?action=exchange&type=catalog&mode=file&filename=имя_файла

4) Передать файл

5) Выполнить запрос с указанием имени файла, который необходимо обработать http://example.mstarproject.com/?action=exchange&type=catalog&mode=import&filename=имя_файла.

В случае успеха в ответ будет получено success. Для имен фалов рекомендовано использовать значение mode из параметров экспорта. Примеры файлов выгрузки на сайт:

Бренды (brand.xml)

<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
  <Бренды>
    <Бренд Название="test"/>
  </Бренды>
</КоммерческаяИнформация>


* После выгрузки брендов на сайте в разделе прайсы воспользоваться пунктом "проверьте префиксы" в котором

 нужно сгенирировать новые

префиксы для брендов, либо привязать к существующим.

Товары (прайс)(price.xml)

<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
  <Товары>
    <ОчиститьПоставщиков Ид="123, 111"/> // Строка в которой через запятую указаны  						    идентификаторы поставщиков на сайте, товары 					    которых нужно очистить перед выгрузкой 
    <Товар 
      Название="Важіль підвіски" // Название товара
      КодПоставщика="1312" 	   // Ид поставщика на сайте
      Артикул="SA4791L" 	   // Артикул товара
      Описание="" 		   // Описание товара
      Производитель="555" 	   // Название производителя
      Количество=">9" 		   // Количество товара
      Цена="9.78"			   // Цена товара
    />
  </Товары>
</КоммерческаяИнформация>

Контрагенты(customers.xml)

<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
  <Контрагенты>
    <Контрагент 
      Идентификатор1С="111111111"  		// Ид контрагента в 1С
      ФИО="Иванов Иван" 			// ФИО
      Логин="0671234567" 			// Логин контрагента 
      Почта="begrex@pmarket.ru" 		// Почта контрагента
      Телефон="0671234567" 			// Телефон контрагента
      Город="Киев" 				// Город
      Адрес="пр. Мира 20" 			// Адрес
      Примечания="" 				// Примечания
      ТипПользователя="частное лицо"	// Тип контрагента (юр./ физ.)
     />
   </Контрагенты>
</КоммерческаяИнформация>

Поле логин рекомендовано заполнять номером телефона либо адресом электронной почты. По умолчанию задается пароль 123456.

Заказы(orders.xml)

<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
<Заказы>
  <Заказ 
    НомерЗаказа="" 		// Ид заказа на сайте (указывается для обновления данных по заказу)
    НомерЗаказа1C="1234567"	// Ид заказа в 1c
    ДатаЗаказа="2020-07-22" 	// Дата заказа
    ВремяЗаказа="08:42:21" 	// Время заказа
    СуммаЗаказа="41.00" 	// Сумма заказа
    СпособОплаты="Наличными при получении товара" // Способ оплаты на сайте
    Доставка="Самовывоз" 	// Способ доставки на сайте
    СтатусЗаказа="work"		// Статус заказа
  >
    <Контрагент 
      Номер="1322" 		// Ид контрагента на сайте
      ФИО="" 			// ФИО
      Идентификатор1С="" 	// Ид контрагента в 1С
      Логин="" 			// Логин контрагента 
      Почта="" 			// Почта контрагента
      Телефон="" 			// Телефон контрагента
      Город="" 			// Город
      Адрес=""			// Адрес
    />
    <Товары>
      <Товар 
	Код="WL7129" 		// Артикул товара
	Цена="40.82" 		// Цена продажи товара
	ЗакупочнаяЦена="1.42" 	// Закупочная цена
	Количество="1" 		// Количество товара
	Сумма="40.82" 		// Сумма продажи товара
	СтатусТовара="end" 	// Статус позиции в заказе на сайте
	КодПоставщика="1315" 	//  Ид поставщика товара
	Постaвщик="vladislav" 	// Название поставщика
	ПрефиксКод="AWP_WL7129" // Внутренний код производителя + артикул товара
	Префикс="AWP" 		// Внутренний код производителя
	Производитель="wixfilters" // Название производителя
	Название="WIX WL7129 = FN OP570" // Название товара
      />
    </Товары>
  </Заказ>
</Заказы>
</КоммерческаяИнформация> 			

Cтатусы заказа:
"Приостановлен"="pending"
"В работе"="work"
"Выдано"="end"
"Отказано"="refused"

Статусы товаров в заказе:
"В работе"="work"
"Подтвержден"="confirmed"
"В пути"="road"
"На складе"="store"
"Выдано"="end"
"Отказано"="refused"

Кроссы(cross.xml)

<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
  <Кроссы>
    <Кросс 
      Производитель="wix filters" 	// Название производителя
      Артикул="WL7129" 			// Артикул товара
      КроссПроизводитель="CHAMPION" // Название кросс производителя
      КроссАртикул="COF101102S" 	// Артикул кросс товара
    /> 
  </Кроссы>
</КоммерческаяИнформация>


Синхронизация в формате JSON через HTTP-сервисы в 1С

Передача из сайта в 1С (экспорт)

Бренды

1С отправляет запрос на адрес /pages/exchangejs_export_brands

В ответ передается массив Brands с данными о брендах (производителях), пример:

{
  "Brands":[
    {
       "ID":"1",               // Ид производителя на сайте
       "Name":"TWR",    // Название производителя
       "Pref":"AAB"         // Внутренний код производителя
    }
   ]
}

Товары (прайс)

1С отправляет запрос на адрес /pages/exchangejs_export_price

В ответ передается массив Price с данными о товарах (прайсах), пример:

{
  "Price":[
    {
      "ID":"1",				// Ид товара на сайте 
      "Name":"Parts",			// Название товара
      "ProviderID":"2",			// Ид поставщика на сайте
      "Code":"1107024",		// Артикул товара
      "Description":"",			// Описание товара
      "ItemCode":"ADN_1107024",	// Внутренний код производителя + артикул товара
      "ProducerName":"BOSCH",	// Название производителя
      "Quantity":"2",			// Количество товара
      "Price":"10.00"		           // Цена товара

    }
   ]
}
* стоит ограничение в 5 записей, так как данный метод нужно корректировать ввиду большого количества записей. 

Поставщики

1С отправляет запрос на адрес /pages/exchangejs_export_providers

В ответ передается массив Providers с данными о поставщиках , пример:

{
 "Providers":[
  {
   "ID":"2",			// Ид поставщика на сайте
   "Name":"elit",			// Название поставщика
   "Description":"elit",	// Описание
   "CodeName":"elit",		// Кодовое название поставщика 
   "Country":"Страна",		// Страна
   "City":"Город",		// Город
   "Address":"ул. Улица д.1", // Адрес
   "Phone":"(000)0000000",	// Телефон поставщика
   "Login":"elit",		// Логин поставщика
   "Email":"elit@mail.ua",	// Почта поставщика
   "ProviderDelivery":"0",	// Срок поставки товара поставщиком
   "Margin":"Наценка 15%",	// Наценка поставщика
   "Remark":"",			// Примечания
   "ID1c":null			// Ид поставщика в 1С

   }
  ]
}

Контрагенты

1С отправляет запрос на адрес /pages/exchangejs_export_customers

В ответ передается массив Customers с данными о контрагентах , пример:

{
 "Customers":[
   {
    "ID":"6",						// Ид контрагента на сайте
    "FIO":"RosarioFep",					// ФИО
    "Country":null,					// Страна
    "City":"Sembawang",					// Город
    "Address":"Sembawang",				// Адрес
    "Phone":"87191848937",				// Телефон контрагента
    "Login":"RosarioFep",				// Логин контрагента
    "Email":"begrex@prog.ua",				// Почта контрагента
    "RegistrationDate":"2018-01-21 00:41:36",   // Дата регистрации
    "DateLastVisit":"2018-01-21 00:41:37",      // Дата последнего визита 
    "Remark":"",						// Примечания
    "CustomerType":"частное лицо",			// Тип контрагента (юр./ физ.)
    "ID1c":null						// Ид контрагента в 1С

   }
 ]
}

Заказы

1С отправляет запрос на адрес /pages/exchangejs_export_orders

В ответ передается массив Orders с данными о заказах , пример:

{
  "Orders":[
    {
     "ID":"43",				// Ид заказа на сайте
     "ID1c":null,				// Ид заказа в 1С
     "OrderDate":"2018-03-26",	// Дата заказа
     "OrderTime":"12:35:07",		// Время заказа
     "PriceTotal":"123.52",		// Сумма заказа
     "PaymentType":"Наличными", 	// Способ оплаты
     "DeliveryType":"Самовывоз",	// Способ доставка
     "IDManager":"0",			// Ид менеджера на сайте
     "OrderStatus":"new",		// Статус заказа
     "Customer":				// Массив данных заказчика
      {
       "ID":"43",				// Ид контрагентa на сайте
       "FIO":null,			// ФИО
       "City":null,			// Город
       "Address":null,			// Адрес
       "Phone":"(011)111-11-11",	// Телефон контрагентa
       "Login":"(011)111-11-11",	// Логин контрагентa
       "Email":"",			// Почта контрагентa 
       "ID1c":null			// Ид контрагентa в 1С
      },
     "Goods":[				// Массив c товарами
      {
       "ID":"69",				// Ид позиции в заказе на сайте
       "Code":"4248",			// Артикул товара
       "Name":"Фильтр",			// Название товара
       "ItemCode":"ANG_4248",	     // Внутренний код производителя + артикул товара
       "Price":"123.52",		// Цена продажи товара
       "PriceOriginal":"100.98",	//Закупочная цена
       "Quantity":"1",			// Количество товара
       "Amount":123.52,			// Сумма продажи товара 
       "ManagerComment":"",		//Комментарий менеджера
       "GoodsStatus":"pending",	// Статус позиции в заказе на сайте
       "ProviderDelivery":"0",	// Срок поставки товара
       "ProviderID":"39",		// Ид поставщика товара
       "ProviderName":"Caruk",	// Название поставщика
       "Pref":"ANG",			// Внутренний код производителя
       "ProducerName":"lpr"		// Название производителя
      }
     ]
    }
   ]
  }

Передача на сайт из 1С (импорт)

Бренды

1С отправляет POST запрос на адрес /pages/exchangejs_import_brands

{
 "Brands":[
  {
   "Name":"Test1" // Название производителя
  },
  {
   "Name":"Test2" // Название производителя
  }
 ]
}

В случае успешного выполнения будет возвращено значение: «True»

В случае ошибки в данных будет возвращено значение: «Error: check the data»

В случае отсутствия данных будет возвращено значение: «Error: There is no data»

*После выгрузки брендов на сайте в разделе прайсы воспользоваться пунктом "проверьте префиксы"<br> в котором нужно сгенерировать новые префиксы для брендов, либо привязать к существующим.

Доработки

Из-за того что есть разные конфигурации 1С, создать шаблон модуля довольно сложно, описанные обмены данными это основные моменты работы модуля, которые можно расширять и дополнять, в зависимости от требований заказчика, например: передача из 1С статусов заказов (при условии что менеджеры обрабатывают заказы в 1С), передача в 1С платежей через онлайн-системы (liqpay) и так далее.

Естимейт базовой версии задания - 20ч

Вернуться к списку модулей: Модули_пакет_Експерт_-_Документация