Синхронизация с 1С — различия между версиями

Материал из MstarProject Manual
Перейти к: навигация, поиск
(Контрагенты)
(не показана одна промежуточная версия 2 участников)
Строка 5: Строка 5:
 
Модуль разрабатывается индивидуально для каждого заказчика и при тесном сотрудничестве с вашим программистом 1С.
 
Модуль разрабатывается индивидуально для каждого заказчика и при тесном сотрудничестве с вашим программистом 1С.
  
При обмене данными инициатором обмена выступает 1С. Выделим основные моменты по передаче данных:
+
'''Синхронизацию сайта с 1С можно проводить посредством двух форматов либо через [http://manual.mstarproject.com/index.php/%D0%A1%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D1%81_1%D0%A1#.D0.A1.D0.B8.D0.BD.D1.85.D1.80.D0.BE.D0.BD.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F_.D0.B2_.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.82.D0.B5_XML  XML] либо через [http://manual.mstarproject.com/index.php/%D0%A1%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D1%81_1%D0%A1#.D0.A1.D0.B8.D0.BD.D1.85.D1.80.D0.BE.D0.BD.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F_.D0.B2_.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.82.D0.B5_JSON_.D1.87.D0.B5.D1.80.D0.B5.D0.B7_HTTP-.D1.81.D0.B5.D1.80.D0.B2.D0.B8.D1.81.D1.8B_.D0.B2_1.D0.A1 JSON]'''
 +
 
 +
При обмене данными инициатором обмена выступает 1С. Рассмотрим основные моменты при синхронизации посредством обоих форматов:
 +
 
 +
 
 +
= Синхронизация в формате XML =
  
  
 
== Инициализация ==
 
== Инициализация ==
  
1С отправляет запрос на адрес http://site.mstarproject.com/exchange.php?type=catalog&mode=checkauth и передает значение логина и пароля менеджера 1С. Этот менеджер создается в Мпанели и используется только для авторизации 1С.  
+
В начале сеанса 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. (Но по просьбе заказчика можно рассмотреть изменение кодировки на другую).
 
Весь обмен происходит в кодировке UTF8. (Но по просьбе заказчика можно рассмотреть изменение кодировки на другую).
Строка 16: Строка 27:
 
В конце любой операции выдается или '''success''' - успешное выболнение, или '''failure''' - ошибка.
 
В конце любой операции выдается или '''success''' - успешное выболнение, или '''failure''' - ошибка.
  
== Передача из сайта в 1С ==
 
  
 +
== Передача из сайта в 1С (экспорт)==
  
=== Контрагенты ===
 
  
1С отправляет запрос на адрес http://site.mstarproject.com/exchange.php?type=sale&mode=customers
+
=== Бренды ===
  
В ответ передается XML с содержанием контрагентов, пример:
+
1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&mode=brands
 +
 
 +
В ответ передается файл  с данными о брендах (производителях), следующей структуры:
  
 
<pre>
 
<pre>
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="2018-11-05">
+
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
<Контрагенты>
+
  <Бренды>
  <Контрагент Номер="342" Идентификатор1С="" ФИО="Старовойт Михаил" Логин="mstar" Почта="mstar@i.ua" Телефон="(012) 345 67 89" Город="Чернигов" Адрес="ул. Петрова 2" ДатаРегистрации="2018-11-05 14:55:36" ДатаПоследнегоВизита="2018-11-05 14:55:36" Примечания="" ТипПользователя="частное лицо"/>
+
    <Бренд
</Контрагенты>
+
            Номер="1"                     // Ид производителя на сайте
 +
  Название="1afirstautomotive" // Название производителя
 +
  Префикс="AAB"                         // Внутренний код производителя
 +
    />
 +
    <Бренд
 +
            Номер="..."                    
 +
  Название="...."
 +
  Префикс="...."                        
 +
    />
 +
  </Бренды>
 
</КоммерческаяИнформация>
 
</КоммерческаяИнформация>
 
</pre>
 
</pre>
  
Обратите внимание, при обмене контрагентами необходима двойная идентификация, '''Логин''' - идентификатор для сайта, '''ID''' - идентификатор для 1С. в Любом случае хотябы один из идентификаторов должен присутствовать. Если пустой '''Логин''', то это сигнал сайту, что надо создать такого пользователя (пользователь создан в 1С, надо создать на сайте). И наоборот, если пустой '''ID''' - надо создать в 1С (пользователь создан на сайте, надо создать в 1С).
+
=== Товары (прайс) ===
  
Количество параметров может быть расширено в зависимости от нужд заказчика.<br>
+
1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&mode=price
Выдаются контрагенты с датой регистрации '''не позже 40 дней назад'''.
+
 
 +
В ответ передается  файл с данными о товарах (прайсах), следующей структуры:
 +
<pre>
 +
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
 +
  <Товары>
 +
  <Товар
 +
      Код="1" // Ид товара на сайте
 +
      Название="Важіль підвіски" // Название товара
 +
      КодПоставщика="1312" // Ид поставщика на сайте
 +
      Артикул="SA4791L" // Артикул товара
 +
      Описание="" // Описание товара
 +
      ПрефиксКод="CMW_SA4791L" // Внутренний код производителя + артикул товара
 +
      Производитель="555" // Название производителя
 +
      Количество="2" // Количество товара
 +
      Цена="936.78" // Цена товара
 +
  />
 +
  </Товары>
 +
</КоммерческаяИнформация>
 +
</pre>
 +
 
 +
<pre>* стоит ограничение в 5 записей, так как данный метод нужно корректировать ввиду большого количества записей.</pre>  
 +
 
 +
=== Поставщики ===
 +
 
 +
1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&mode=providers
 +
 
 +
В ответ передается  файл с данными о поставщиках , следующей структуры:
 +
 
 +
<pre>
 +
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
 +
  <Поставщики>
 +
    <Поставщик
 +
      Номер="1312" // Ид поставщика на сайте
 +
      Название="elit" // Название поставщика
 +
      Описание="elit" // Описание
 +
      КодовоеНазвание="elit"  // Кодовое название поставщика
 +
      Страна="" // Страна
 +
      Город="" // Город
 +
      Адрес="" // Адрес
 +
      Телефон="" // Телефон поставщика
 +
      Логин="elit" // Логин поставщика
 +
      Почта="elit@mail.ua" // Почта поставщика
 +
      СрокПоставки="0" // Срок поставки товара поставщиком
 +
      Наценка="Наценка 0" // Наценка поставщика
 +
      Примечания="" // Примечания
 +
      Идентификатор1С="" // Ид поставщика в 1С
 +
    />
 +
  <Поставщики>
 +
</КоммерческаяИнформация>
 +
</pre>
 +
 
 +
=== Контрагенты ===
 +
 
 +
1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&mode=customers
 +
 
 +
В ответ передается  файл с данными о контрагентах , следующей структуры:
 +
 
 +
<pre>
 +
<КоммерческаяИнформация ВерсияСхемы="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"// Дата последнего визита 
 +
      Примечания="" // Примечания
 +
      ТипПользователя="частное лицо" // Тип контрагента (юр./ физ.)
 +
    />
 +
  <Контрагенты>
 +
</КоммерческаяИнформация>
 +
</pre>
  
 
=== Заказы ===
 
=== Заказы ===
  
1С отправляет запрос на адрес http://site.mstarproject.com/exchange.php?type=sale&mode=orders
+
1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&mode=orders
  
В ответ передается XML с содержанием заказов, пример:
+
В ответ передается файл с данными о заказах , следующей структуры:
  
 
<pre>
 
<pre>
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="2018-11-05">
+
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
<Заказы>
+
<Заказы>
   <Заказ НомерЗаказа="1" НомерЗаказа1C="" ДатаЗаказа="2018-11-05" ВремяЗаказа="15:04:12" СуммаЗаказа="332.26" СпособОплаты="Наличный способ" Доставка="Доставка DHL" ИдМенеджера="0" СтатусЗаказа="new" ТипПользователя="частное лицо">
+
   <Заказ  
  <Контрагент Номер="342" ФИО="Иванов И.И." Идентификатор1С="" Логин="user1" Почта="user1@i.ua" Телефон="(012) 345 67 89" Город="Чернигов" Адрес="ул. Петрова 2"/>
+
    НомерЗаказа="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"// Название товара 
 +
/>
 +
    </Товары>
 +
  </Заказ>
 +
</Заказы>
 +
</КоммерческаяИнформация>
 +
</pre>
 +
 
 +
В данный момент передаются все заказы со статусом «Новый».
 +
 
 +
'''Cтатусы заказа:'''<br>
 +
"Новый"="new"<br>
 +
"Приостановлен"="pending"<br>
 +
"В работе"="work"<br>
 +
"Выдано"="end"<br>
 +
"Отказано"="refused"<br>
 +
 
 +
'''Статусы товаров в заказе:'''<br>
 +
"В работе"="work"<br>
 +
"Подтвержден"="confirmed"<br>
 +
"В пути"="road"<br>
 +
"На складе"="store"<br>
 +
"Выдано"="end"<br>
 +
"Отказано"="refused"<br>
 +
 
 +
== Передача из сайта в 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)===
 +
 
 +
<pre>
 +
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
 +
  <Бренды>
 +
    <Бренд Название="test"/>
 +
  </Бренды>
 +
</КоммерческаяИнформация>
 +
</pre>
 +
 
 +
 
 +
<pre>* После выгрузки брендов на сайте в разделе прайсы воспользоваться пунктом "проверьте префиксы" в котором
 +
 
 +
нужно сгенирировать новые префиксы для брендов, либо привязать к существующим.
 +
</pre>
 +
 
 +
=== Товары (прайс)(price.xml) ===
 +
 
 +
<pre>
 +
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
 
   <Товары>
 
   <Товары>
  <Товар Ид="3" Код="0450904149" КодИзменен="" Цена="79.10" ЗакупочнаяЦена="65.92" Количество="1" Сумма="79.1" КомментарийПокупателя="" КомментарийМереджера="" СрокПоставки="0" СтатусТовара="pending" КодПоствщика="2" Постaвщик="elit" ПрефиксКод="ADN_0450904149" Префикс="ADN" Производитель="bosch" Название="Паливний фільтр" Идентификатор1С=""/>
+
    <ОчиститьПоставщиков Ид="123, 111"/> // Строка в которой через запятую указаны      идентификаторы поставщиков на сайте, товары     которых нужно очистить перед выгрузкой
  <Товар Ид="4" Код="OC90" КодИзменен="" Цена="106.58" ЗакупочнаяЦена="88.82" Количество="2" Сумма="213.16" КомментарийПокупателя="" КомментарийМереджера="" СрокПоставки="0" СтатусТовара="pending" КодПоствщика="2" Постaвщик="elit" ПрефиксКод="AMJ_OC90" Префикс="AMJ" Производитель="knecht" Название="Масляний фiльтр" Идентификатор1С=""/>
+
    <Товар  
 +
      Название="Важіль підвіски" // Название товара
 +
      КодПоставщика="1312"   // Ид поставщика на сайте
 +
      Артикул="SA4791L"   // Артикул товара
 +
      Описание=""   // Описание товара
 +
      Производитель="555"   // Название производителя
 +
      Количество=">9"   // Количество товара
 +
      Цена="9.78"   // Цена товара
 +
    />
 
   </Товары>
 
   </Товары>
  </Заказ>
+
</КоммерческаяИнформация>
 +
</pre>
 +
 
 +
=== Контрагенты(customers.xml) ===
 +
 
 +
<pre>
 +
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
 +
  <Контрагенты>
 +
    <Контрагент
 +
      Идентификатор1С="111111111"  // Ид контрагента в 1С
 +
      ФИО="Иванов Иван" // ФИО
 +
      Логин="0671234567" // Логин контрагента
 +
      Почта="begrex@pmarket.ru" // Почта контрагента
 +
      Телефон="0671234567" // Телефон контрагента
 +
      Город="Киев" // Город
 +
      Адрес="пр. Мира 20" // Адрес
 +
      Примечания="" // Примечания
 +
      ТипПользователя="частное лицо" // Тип контрагента (юр./ физ.)
 +
    />
 +
  </Контрагенты>
 +
</КоммерческаяИнформация>
 +
</pre>
 +
 
 +
Поле логин рекомендовано заполнять номером телефона либо адресом электронной почты. По умолчанию задается пароль 123456.
 +
 
 +
=== Заказы(orders.xml) ===
 +
 
 +
<pre>
 +
<КоммерческаяИнформация ВерсияСхемы="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" // Название товара
 +
      />
 +
    </Товары>
 +
  </Заказ>
 
</Заказы>
 
</Заказы>
 +
</КоммерческаяИнформация>
 +
</pre>
 +
 +
'''Cтатусы заказа:'''<br>
 +
"Приостановлен"="pending"<br>
 +
"В работе"="work"<br>
 +
"Выдано"="end"<br>
 +
"Отказано"="refused"<br>
 +
 +
'''Статусы товаров в заказе:'''<br>
 +
"В работе"="work"<br>
 +
"Подтвержден"="confirmed"<br>
 +
"В пути"="road"<br>
 +
"На складе"="store"<br>
 +
"Выдано"="end"<br>
 +
"Отказано"="refused"<br>
 +
 +
=== Кроссы(cross.xml) ===
 +
 +
<pre>
 +
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="0000-00-00">
 +
  <Кроссы>
 +
    <Кросс
 +
      Производитель="wix filters" // Название производителя
 +
      Артикул="WL7129" // Артикул товара
 +
      КроссПроизводитель="CHAMPION" // Название кросс производителя
 +
      КроссАртикул="COF101102S" // Артикул кросс товара
 +
    />
 +
  </Кроссы>
 
</КоммерческаяИнформация>
 
</КоммерческаяИнформация>
 
</pre>
 
</pre>
  
Заказ содержит одного покупателя и один или более товаров.
 
  
Обратите внимание, что код (артикул) сайта является "очищеным" кодом, то есть не содержит пробелы, тире, точки и другие "лишние" символы, а код 1С передается в том виде в котором был получен из .
+
=  Синхронизация в формате JSON через HTTP-сервисы в 1С =
  
У каждого заказа на сайте есть флаг передачи, при создании заказа флаг=0, при выгрузке в 1С - флаг меняет значение на 1, когда 1С проинформирует сайт об успешной обработке, флаг станет равен 2. После чего выгрузка в 1С такого заказа не повторяется. Поведение флага можно обговорить с заказчиком, например можно получать от 1С список принятых заказов и только потом устанавливать флаг - это исключит случаи потери заказов при перебоях в передаче.
+
==  Передача из сайта в 1С (экспорт)  ==
  
== Передача из 1С на сайт ==
+
=== Бренды ===
  
Любая передача данных из начинается передачей файла, производится методом POST на адрес http://site.mstarproject.com/exchange.php?type=catalog&mode=file&filename=FILE
+
отправляет запрос на адрес /pages/exchangejs_export_brands
  
Значение FILE лучше указывать разным для разных обменов данными, например для передачи клиентов может выглядеть так: http://site.mstarproject.com/exchange.php?type=catalog&mode=file&filename=clients.xml
+
В ответ передается  массив Brands с данными о брендах (производителях), пример:
  
Разные названия файлов нужны по причине того, что при загрузке файл записывается поверх файла с одинаковым именем, хотя это необязательное условие.
+
<pre>
 +
{
 +
  "Brands":[
 +
    {
 +
      "ID":"1",               // Ид производителя на сайте
 +
      "Name":"TWR",   // Название производителя
 +
      "Pref":"AAB"        // Внутренний код производителя
 +
    }
 +
  ]
 +
}
 +
</pre>
  
Далее 1С запускает процесс обработки загруженного файла, посылая запрос на адрес: http://site.mstarproject.com/exchange.php?type=catalog&mode=import&filename=FILE
+
=== Товары (прайс) ===
  
Обратите внимание, что сначала надо загрузить файл на сайт, потом его обработать.
+
1С отправляет запрос на адрес /pages/exchangejs_export_price
 +
 
 +
В ответ передается  массив Price с данными о товарах (прайсах), пример:
 +
 
 +
<pre>
 +
{
 +
  "Price":[
 +
    {
 +
      "ID":"1", // Ид товара на сайте
 +
      "Name":"Parts", // Название товара
 +
      "ProviderID":"2", // Ид поставщика на сайте
 +
      "Code":"1107024", // Артикул товара
 +
      "Description":"", // Описание товара
 +
      "ItemCode":"ADN_1107024", // Внутренний код производителя + артикул товара
 +
      "ProducerName":"BOSCH", // Название производителя
 +
      "Quantity":"2", // Количество товара
 +
      "Price":"10.00"           // Цена товара
 +
 
 +
    }
 +
  ]
 +
}
 +
</pre>
 +
<pre>
 +
* стоит ограничение в 5 записей, так как данный метод нужно корректировать ввиду большого количества записей.
 +
</pre>
 +
 
 +
===  Поставщики  ===
 +
 
 +
1С отправляет запрос на адрес /pages/exchangejs_export_providers
 +
 
 +
В ответ передается  массив Providers с данными о поставщиках , пример:
 +
 
 +
<pre>
 +
{
 +
"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С
 +
 
 +
  }
 +
  ]
 +
}
 +
</pre>
 +
 
 +
===  Контрагенты  ===
 +
 
 +
1С отправляет запрос на адрес /pages/exchangejs_export_customers
 +
 
 +
В ответ передается  массив Customers с данными о контрагентах , пример:
 +
 
 +
<pre>
 +
{
 +
"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С
 +
 
 +
  }
 +
]
 +
}
 +
</pre>
 +
 
 +
===  Заказы  ===
 +
 
 +
1С отправляет запрос на адрес /pages/exchangejs_export_orders
 +
 
 +
В ответ передается  массив Orders с данными о заказах , пример:
 +
 
 +
<pre>
 +
{
 +
  "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" // Название производителя
 +
      }
 +
    ]
 +
    }
 +
  ]
 +
  }
 +
</pre>
  
Сайт производит обработку данных в файле исходя из веток XML, в принципе все данные можно выгружать в одном файле, но из-за возможно большого файла обработка может занять много времени, поэтому рекомендуем разбивать разные данные на разные файлы.
+
==  Передача на сайт из 1С (импорт)  ==
  
 
=== Бренды ===
 
=== Бренды ===
  
Сайт идентифицирует деталь по двум параметрам: код (артикул) и бренд (производитель детали). У каждого проекта может быть свой набор брендов, поэтому их надо выгрузить на сайт для того чтобы на сайте связать бренды из и бренды сайта, в большенстве случаев это произойдет автоматически (если названия брендов совпадут с уже существующими бренлами на сайте, иначе придется делать это вручную)
+
отправляет POST запрос на адрес /pages/exchangejs_import_brands
  
Пример данных в XML-файле из 1С:
 
 
<pre>
 
<pre>
<Бренды>
+
{
  <Бренд ID="Mitsubishi" Name="MITSUBISHI"/>
+
"Brands":[
   <Бренд ID="TO" Name="Toyota"/>
+
   {
   <Бренд ID="NIS" Name="NISSAN"/>
+
  "Name":"Test1" // Название производителя
</Бренды>
+
   },
 +
  {
 +
  "Name":"Test2" // Название производителя
 +
  }
 +
]
 +
}
 
</pre>
 
</pre>
  
'''ID''' - идентификатор 1С, который передается в данных с товарами.
+
В случае успешного выполнения будет возвращено значение: «True»
'''Name''' - Название бренда, используется для связи бренда на сайте.
+
 
 +
В случае ошибки в данных будет возвращено значение: «Error: check the data»
 +
 
 +
В случае отсутствия данных будет возвращено значение: «Error: There is no data»
 +
<pre>
 +
*После выгрузки брендов на сайте в разделе прайсы воспользоваться пунктом "проверьте префиксы"
 +
 
 +
в котором нужно сгенерировать новые префиксы для брендов, либо привязать к существующим.
 +
</pre>
  
 
=== Товары (прайс) ===
 
=== Товары (прайс) ===
  
Сайт работает с прайс-листом, то есть с массивом типа Бренд, Код, Цена, дополнительно можно указывать Название, Наличие и другие параметры.
+
1С отправляет POST запрос на адрес /pages/exchangejs_import_price
Пример выгрузки:
+
  
 
<pre>
 
<pre>
<Товары>
+
{
  <Товар ID="MZ313366" Name="Консоль" Price="807" Rest="1" Brand="Mitsubishi"/>
+
"ClearProvider":"1232,1212",  // Строка в которой через запятую указаны      идентификаторы поставщиков на сайте, товары     которых нужно очистить перед выгрузкой
  <Товар ID="4060A098" Name="Амортизатор пр. пер. Colt (406008)" Price="710" Rest="1" Brand="Mitsubishi"/>
+
"Price":[
</Товары>
+
  {   
 +
    "ProducerName":"REMSA",    // Название производителя
 +
    "Pref":"AEL",              // Идентификатор производителя(необязательное поле)
 +
    "Code":"503361",            // Артикул товара
 +
    "Name"=:"Тормозной механизм",// Название товара
 +
    "ProviderID":"1232",        // Ид поставщика на сайте
 +
    "Description":"Ограничения производителя 00000",//Описание товара
 +
    "Quantity":"2",     // Количество товара
 +
    "Price":"6000.00",          // Цена товара
 +
  },
 +
  {
 +
  ...
 +
  }
 +
]
 +
}
 
</pre>
 
</pre>
  
Название параметров может быть изменено и расширено.
+
В случае успешного выполнения будет возвращено значение: «True»
  
Обратите внимание, на сайте работает ценообразование, поэтому из 1С выгружать надо закупочные цены, которые после ценообразования для каждого клиента формируются и отображаются розничными. Ценообразование состоит из двух частей:
+
В случае ошибки в данных будет возвращен массив ошибок : «{"Error":{"BrandNotPresent":["BRAND1","BRAND"]}}»
  
1. Наценка на поставщика (увеличение цены согласно указаной в Мпанели)
+
В случае отсутствия данных будет возвращено значение: «Error: There is no data»
2. Скидка клиента (уменьшение цены согласно группы клиента, указывается в Мпанели)
+
  
=== Контрагенты ===
+
=== Контрагенты ===
  
Операция аналогичная выгрузке в .
+
отправляет POST запрос на адрес /pages/exchangejs_import_customers
  
 
<pre>
 
<pre>
<Контрагенты>
+
{
   <Контрагент ID="НОМЕР001" ФИО="Старовойт Михаил" Логин="mstar" Телефон="0504652966" Email="mikhail.starovoyt@mstarproject.com">
+
"Customers":[
  </Контрагент>
+
   {   
<Контрагенты>
+
    "FIO":"Rosario Fep", // ФИО
 +
    "City":"Sembawang", // Город
 +
    "Address":"Sembawang", // Адрес
 +
    "Phone":"87191848937", // Телефон контрагента
 +
    "Login":"RosarioFep", // Логин контрагента
 +
    "Email":"begrex@prog.ua", // Почта контрагента
 +
    "Remark":"", // Примечания
 +
    "CustomerType":"частное лицо", // Тип контрагента (юр./ физ.)
 +
    "ID1c":"123123123" // Ид контрагента в 1С
 +
  },
 +
  {
 +
  ...
 +
  }
 +
]
 +
}
 
</pre>
 
</pre>
  
Желательно чтобы в выгрузке присутствовал '''Email''', с помощью почты производится восстановление пароля на сайте.
+
При указанном  Email, на почту клиенту отправляется уведомление с регистрацией.
  
Название полей может быть изменено и расширено.
+
В случае успешного выполнения будет возвращено значение: «True»
  
При выгрузке на сайт клиентов, производится поиск клиента в базе сайта по полю '''Логин''', если клиент найден, происходит обновление его данных, если клиент не найден происходит создание нового клиента.
+
В случае ошибки в данных будет возвращено значение: «Error: check the data»
  
 +
В случае отсутствия данных будет возвращено значение: «Error: There is no data»
  
=== Документы(заказы) ===
+
=== Заказы  ===
 +
 
 +
1С отправляет POST запрос на адрес /pages/exchangejs_import_orders
  
 
<pre>
 
<pre>
<Документы>
+
{
   <Документ>
+
   "Orders":[
     <ID>729</ID>
+
  {
    <IDМенеджера>1070</IDМенеджера>
+
     "ID":"",                                                                         // Ид заказа на сайте (указывается для         обновления данных по заказу)
     <Номер>ТЗ000000148</Номер>
+
     "ID1c":"000001", // Ид заказа на сайте
     <Дата>2014-12-04</Дата>
+
     "OrderDate":"2020-07-04", // Дата заказа
     <ХозОперация>Заказ товара</ХозОперация>
+
     "OrderTime":"12:10:38", // Время заказа
    <Роль>Продавец</Роль>
+
     "PriceTotal":"35580.00", // Сумма заказа
     <Сумма>25,43</Сумма>
+
     "IDPaymentType":"2", // Ид cпособа оплаты на сайте
     <Валюта>840</Валюта>
+
     "IDDeliveryType":"1", // Ид способа доставка на сайте
    <Время></Время>
+
     "OrderStatus":"work", // Статус заказа
     <Комментарий>Доставка Новая Почта; 0.00 USD</Комментарий>
+
     "IDCustomer":"1237", // Ид контрагента на сайте
     <Статус>В работе</Статус>
+
     "Goods":[ // Массив с товарами заказа
     <Удален>Нет</Удален>
+
{
     <Контрагенты>
+
  "Code":"YSKMA1381", // Артикул товара
      <Контрагент>
+
  "Name":"масляный насос MA AJ 3.0 TRIBUTE YSK",// Название товара
<ID>4649</ID>
+
  "ItemCode":"YSK_YSKMA1381",// Внутренний код производителя + артикул товара
<Наименование>ФЛП Стронов</Наименование>
+
  "Price":"25440.00", // Цена продажи товара
<Роль>Покупатель</Роль>
+
  "PriceOriginal":"16960.00", // Закупочная цена
<ПолноеНаименование>ФЛП Стронов</ПолноеНаименование>
+
  "Quantity":"1", // Количество товара
      </Контрагент>
+
  "Amount":"25440", // Сумма продажи товара
    </Контрагенты>
+
  "ManagerComment":"Test", // Комментарий менеджера
    <Товары>
+
  "GoodsStatus":"pending", // Статус позиции в заказе на сайте
      <Товар>
+
  "ProviderID":"1227", //  Ид поставщика товара
<Наименование>Фильтр воздушный (76)</Наименование>
+
  "Pref":"YSK", // Внутренний код производителя
<Артикул>1780130040</Артикул>
+
  "ProducerName":"YSK" // Название производителя
<Производитель>TOYOTA</Производитель>
+
},
<КодБренда>2250</КодБренда>
+
{
<Количество>1</Количество>
+
  "Code":"YSKNS1464", // Артикул товара
<Резервировать>Да</Резервировать>
+
  "Name":"масляный насос NI FRONTIER VQ40DE 04- YSK",// Название товара
<IDПоставщика>241</IDПоставщика>
+
  "ItemCode":"YSK_YSKMA1381",// Внутренний код производителя + артикул товара
<Статус>Подтвержден</Статус>
+
  "Price":"27930.00", // Цена продажи товара
<Цена>25,43</Цена>
+
  "PriceOriginal":"18620.00", // Закупочная цена
<Сумма>25,43</Сумма>
+
  "Quantity":"1", // Количество товара
      </Товар>
+
  "Amount":"27930", // Сумма продажи товара
    </Товары>
+
  "ManagerComment":"Test2", // Комментарий менеджера
  </Документ>
+
  "GoodsStatus":"pending", // Статус позиции в заказе на сайте
</Документы>
+
  "ProviderID":"1227", //  Ид поставщика товара
 +
  "Pref":"YSK", // Внутренний код производителя
 +
  "ProducerName":"YSK" // Название производителя
 +
 
 +
}
 +
    ]
 +
  }
 +
  {...}
 +
  ]
 +
}
 
</pre>
 
</pre>
  
Название полей может быть изменено и расширено.
+
'''Cтатусы заказа:'''<br>
При выгрузке на сайт заказов, производится поиск заказа в базе сайта по полю '''Номер'''(идентификатор заказа сайта, уникальный) или по полю '''ID''' (идентификатор из 1С, должен быть уникальный), если заказ не найден то создается новый.
+
"Приостановлен"="pending"<br>
 +
"В работе"="work"<br>
 +
"Выдано"="end"<br>
 +
"Отказано"="refused"<br>
 +
 
 +
'''Статусы товаров в заказе:'''<br>
 +
"В работе"="work"<br>
 +
"Подтвержден"="confirmed"<br>
 +
"В пути"="road"<br>
 +
"На складе"="store"<br>
 +
"Выдано"="end"<br>
 +
"Отказано"="refused"<br>
 +
 
 +
В случае успешного выполнения будет возвращено значение: «True»
 +
 
 +
В случае ошибки в данных будет  возвращен массив ошибок : «{"Error":["...."]}»
 +
 
 +
В случае отсутствия данных будет возвращено значение: «Error: There is no data»
 +
 
 +
=== Кроссы ===
 +
 
 +
отправляет POST запрос на адрес /pages/exchangejs_import_crosses
 +
 
 +
<pre>
 +
{
 +
"Crosses":[
 +
  {   
 +
    "ProducerName":"YSK", // Название производителя
 +
    "Code":"YSKNS1464", // Артикул товара
 +
    "ProducerNameCross":"YSK", // Название кросс производителя
 +
    "CodeCross":"87191848937", // Артикул кросс товара
 +
  },
 +
  {
 +
  ...
 +
  }
 +
]
 +
}
 +
</pre>
 +
 
 +
В случае успешного выполнения будет возвращено значение: «True»
 +
 
 +
В случае ошибки в данных будет  возвращен массив ошибок : «{"Error":["Check brans on cross YSKEE - YSKNS1464 on YSK - YSKMA1381"]}»
 +
 
 +
В случае отсутствия данных будет возвращено значение: «Error: There is no data»
 +
 
 +
=== Группы товаров ===
 +
 
 +
1С отправляет POST запрос на адрес /pages/exchangejs_import_price_group
 +
 
 +
<pre>
 +
{"PriceGroup":[
 +
    {
 +
      "ID1c":"00087",                  // Ид группы в 1С
 +
      "GroupName":"Запчасти Иномарки"  // Название группы
 +
    }, 
 +
    {
 +
      "ID1c":"00121",
 +
      "GroupName":"ГБО"
 +
    }
 +
  ]               
 +
}
 +
</pre>
 +
 
 +
В случае успешного выполнения будет возвращено значение: «True»
 +
 
 +
В случае ошибки в данных будет  возвращен массив ошибок : «{"Error":["Check input data  price group on code"]}»
 +
 
 +
В случае отсутствия данных будет возвращено значение: «Error: There is no data»
 +
 
 +
=== Поставщики ===
 +
 
 +
1С отправляет POST запрос на адрес /pages/exchangejs_import_providers
 +
 
 +
<pre>
 +
{"Providers":[
 +
  {
 +
    "ID1c":"000000001",  \\Ид поставщика в 1С
 +
    "Name":"№1-Иномарка" \\Название
 +
  }
 +
]
 +
}
 +
</pre>
 +
 
 +
В случае успешного выполнения будет возвращено значение: «True»
 +
 
 +
В случае ошибки в данных будет  возвращен массив ошибок : «{"Error":["Dublicate login/email
 +
"]}»
 +
 
 +
В случае отсутствия данных будет возвращено значение: «Error: There is no data»
  
== Доработки ==
+
= Доработки =
  
 
Из-за того что есть разные конфигурации 1С, создать шаблон модуля довольно сложно, описанные обмены данными это основные моменты работы модуля, которые можно расширять и дополнять, в зависимости от требований заказчика, например: передача из 1С статусов заказов (при условии что менеджеры обрабатывают заказы в 1С), передача в 1С платежей через онлайн-системы (liqpay) и так далее.
 
Из-за того что есть разные конфигурации 1С, создать шаблон модуля довольно сложно, описанные обмены данными это основные моменты работы модуля, которые можно расширять и дополнять, в зависимости от требований заказчика, например: передача из 1С статусов заказов (при условии что менеджеры обрабатывают заказы в 1С), передача в 1С платежей через онлайн-системы (liqpay) и так далее.

Версия 15:46, 11 января 2021

Модуль предназначен для синхронизации данных между сайтом и вашей конфигурацией 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»

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

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

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

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

{
 "ClearProvider":"1232,1212",  // Строка в которой через запятую указаны  						    идентификаторы поставщиков на сайте, товары 					    которых нужно очистить перед выгрузкой 
 "Price":[
  {    						
    "ProducerName":"REMSA",     // Название производителя
    "Pref":"AEL",               // Идентификатор производителя(необязательное поле)
    "Code":"503361",            // Артикул товара
    "Name"=:"Тормозной механизм",// Название товара
    "ProviderID":"1232",        // Ид поставщика на сайте
    "Description":"Ограничения производителя 00000",//Описание товара
    "Quantity":"2",			    // Количество товара
    "Price":"6000.00",          // Цена товара
  },
  {
   ...
  }
 ]
}

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

В случае ошибки в данных будет возвращен массив ошибок : «{"Error":{"BrandNotPresent":["BRAND1","BRAND"]}}»

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

Контрагенты

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

{
 "Customers":[
  {    						
    "FIO":"Rosario Fep",				// ФИО
    "City":"Sembawang",					// Город
    "Address":"Sembawang",				// Адрес
    "Phone":"87191848937",				// Телефон контрагента
    "Login":"RosarioFep",				// Логин контрагента
    "Email":"begrex@prog.ua",				// Почта контрагента
    "Remark":"",						// Примечания
    "CustomerType":"частное лицо",			// Тип контрагента (юр./ физ.)
    "ID1c":"123123123"					// Ид контрагента в 1С
  },
  {
   ...
  }
 ]
}

При указанном Email, на почту клиенту отправляется уведомление с регистрацией.

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

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

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

Заказы

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

{
  "Orders":[
  {
    "ID":"", 	                                                                         // Ид заказа на сайте (указывается для 						         обновления данных по заказу)
    "ID1c":"000001",					// Ид заказа на сайте
    "OrderDate":"2020-07-04",				// Дата заказа
    "OrderTime":"12:10:38",				// Время заказа
    "PriceTotal":"35580.00",				// Сумма заказа
    "IDPaymentType":"2",					// Ид cпособа оплаты на сайте
    "IDDeliveryType":"1",					// Ид способа доставка на сайте
    "OrderStatus":"work",					// Статус заказа
    "IDCustomer":"1237",					// Ид контрагента на сайте
    "Goods":[ 						// Массив с товарами заказа
	{
	  "Code":"YSKMA1381",				// Артикул товара
	  "Name":"масляный насос MA AJ 3.0 TRIBUTE YSK",// Название товара
	  "ItemCode":"YSK_YSKMA1381",// Внутренний код производителя + артикул товара
	  "Price":"25440.00",		// Цена продажи товара
	  "PriceOriginal":"16960.00",	// Закупочная цена
	  "Quantity":"1",			// Количество товара
	  "Amount":"25440",		// Сумма продажи товара
	  "ManagerComment":"Test",	// Комментарий менеджера
	  "GoodsStatus":"pending",	// Статус позиции в заказе на сайте
	  "ProviderID":"1227",		//  Ид поставщика товара
	  "Pref":"YSK",			// Внутренний код производителя
	  "ProducerName":"YSK"		// Название производителя
	},
	{
	  "Code":"YSKNS1464",		// Артикул товара
	  "Name":"масляный насос NI FRONTIER VQ40DE 04- YSK",// Название товара
	  "ItemCode":"YSK_YSKMA1381",// Внутренний код производителя + артикул товара
	  "Price":"27930.00",		// Цена продажи товара
	  "PriceOriginal":"18620.00",	// Закупочная цена
	  "Quantity":"1",			// Количество товара
	  "Amount":"27930",		// Сумма продажи товара
	  "ManagerComment":"Test2",	// Комментарий менеджера
	  "GoodsStatus":"pending",	// Статус позиции в заказе на сайте
	  "ProviderID":"1227",		//  Ид поставщика товара
	  "Pref":"YSK",			// Внутренний код производителя
	  "ProducerName":"YSK"		// Название производителя

	}
     ]
  }
  {...}
  ]
}

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

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

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

В случае ошибки в данных будет возвращен массив ошибок : «{"Error":["...."]}»

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

Кроссы

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

{
 "Crosses":[
  {    						
    "ProducerName":"YSK",				// Название производителя
    "Code":"YSKNS1464",					// Артикул товара
    "ProducerNameCross":"YSK",			// Название кросс производителя
    "CodeCross":"87191848937",			// Артикул кросс товара
  },
  {
   ...
  }
 ]
}

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

В случае ошибки в данных будет возвращен массив ошибок : «{"Error":["Check brans on cross YSKEE - YSKNS1464 on YSK - YSKMA1381"]}»

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

Группы товаров

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

{"PriceGroup":[
    {
      "ID1c":"00087",                   // Ид группы в 1С
      "GroupName":"Запчасти Иномарки"   // Название группы
    },   
    {
      "ID1c":"00121",
      "GroupName":"ГБО"
    }
  ]                
}

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

В случае ошибки в данных будет возвращен массив ошибок : «{"Error":["Check input data price group on code"]}»

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

Поставщики

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

{"Providers":[
   {
     "ID1c":"000000001",  \\Ид поставщика в 1С
     "Name":"№1-Иномарка" \\Название
   }
 ]
}

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

В случае ошибки в данных будет возвращен массив ошибок : «{"Error":["Dublicate login/email "]}»

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

Доработки

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

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

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