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

Материал из MstarProject Manual
Перейти к: навигация, поиск
Строка 15: Строка 15:
 
== Инициализация ==
 
== Инициализация ==
  
В начале сеанса 1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&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
 
Уточнение параметров сеанса http://example.mstarproject.com/?action=exchange&type=sale&mode=init
  
Строка 25: Строка 28:
  
  
== Передача из сайта в 1С ==
+
== Передача из сайта в 1С (экспорт)==
  
  
=== Контрагенты ===
+
=== Бренды ===
  
1С отправляет запрос на адрес http://site.mstarproject.com/exchange.php?type=sale&mode=customers
+
1С отправляет запрос на адрес http://example.mstarproject.com/?action=exchange&type=sale&mode=brands
  
В ответ передается XML с содержанием контрагентов, пример:
+
В ответ передается файл  с данными о брендах (производителях), следующей структуры:
  
 
<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>
 
Выдаются контрагенты с датой регистрации '''не позднее 40 дней назад'''.
 
 
=== Заказы ===
 
 
1С отправляет запрос на адрес http://site.mstarproject.com/exchange.php?type=sale&mode=orders
 
 
В ответ передается XML с содержанием заказов, пример:
 
 
<pre>
 
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="2018-11-05">
 
<Заказы>
 
  <Заказ НомерЗаказа="1" НомерЗаказа1C="" ДатаЗаказа="2018-11-05" ВремяЗаказа="15:04:12" СуммаЗаказа="332.26" СпособОплаты="Наличный способ" Доставка="Доставка DHL" ИдМенеджера="0" СтатусЗаказа="new" ТипПользователя="частное лицо">
 
  <Контрагент Номер="342" ФИО="Иванов И.И." Идентификатор1С="" Логин="user1" Почта="user1@i.ua" Телефон="(012) 345 67 89" Город="Чернигов" Адрес="ул. Петрова 2"/>
 
  <Товары>
 
  <Товар Ид="3" Код="0450904149" КодИзменен="" Цена="79.10" ЗакупочнаяЦена="65.92" Количество="1" Сумма="79.1" КомментарийПокупателя="" КомментарийМереджера="" СрокПоставки="0" СтатусТовара="pending" КодПоствщика="2" Постaвщик="elit" ПрефиксКод="ADN_0450904149" Префикс="ADN" Производитель="bosch" Название="Паливний фільтр" Идентификатор1С=""/>
 
  <Товар Ид="4" Код="OC90" КодИзменен="" Цена="106.58" ЗакупочнаяЦена="88.82" Количество="2" Сумма="213.16" КомментарийПокупателя="" КомментарийМереджера="" СрокПоставки="0" СтатусТовара="pending" КодПоствщика="2" Постaвщик="elit" ПрефиксКод="AMJ_OC90" Префикс="AMJ" Производитель="knecht" Название="Масляний фiльтр" Идентификатор1С=""/>
 
  </Товары>
 
</Заказ>
 
</Заказы>
 
</КоммерческаяИнформация>
 
</pre>
 
 
Заказ содержит одного покупателя и один или более товаров.
 
 
Обратите внимание, что код (артикул) сайта является "очищеным" кодом, то есть не содержит пробелы, тире, точки и другие "лишние" символы, а код 1С передается в том виде в котором был получен из 1С.
 
 
У каждого заказа на сайте есть флаг передачи, при создании заказа флаг=0, при выгрузке в 1С - флаг меняет значение на 1, когда 1С проинформирует сайт об успешной обработке, флаг станет равен 2. После чего выгрузка в 1С такого заказа не повторяется. Поведение флага можно обговорить с заказчиком, например можно получать от 1С список принятых заказов и только потом устанавливать флаг - это исключит случаи потери заказов при перебоях в передаче.<br>
 
Выдаются заказы в статусе "Новый" с датой регистрации '''не позднее 40 дней назад'''.
 
 
== Передача из 1С на сайт ==
 
 
Любая передача данных из 1С начинается передачей файла, производится методом POST на адрес http://site.mstarproject.com/exchange.php?type=catalog&mode=file&filename=FILE
 
 
Значение FILE лучше указывать разным для разных обменов данными, например для передачи клиентов может выглядеть так: http://site.mstarproject.com/exchange.php?type=catalog&mode=file&filename=clients.xml
 
 
Разные названия файлов нужны по причине того, что при загрузке файл записывается поверх файла с одинаковым именем, хотя это необязательное условие.
 
 
Далее 1С запускает процесс обработки загруженного файла, посылая запрос на адрес: http://site.mstarproject.com/exchange.php?type=catalog&mode=import&filename=FILE
 
 
Обратите внимание, что сначала надо загрузить файл на сайт, потом его обработать.
 
 
Сайт производит обработку данных в файле исходя из веток XML, в принципе все данные можно выгружать в одном файле, но из-за возможно большого файла обработка может занять много времени, поэтому рекомендуем разбивать разные данные на разные файлы.
 
 
=== Бренды ===
 
 
Сайт идентифицирует деталь по двум параметрам: код (артикул) и бренд (производитель детали). У каждого проекта может быть свой набор брендов, поэтому их надо выгрузить на сайт для того чтобы на сайте связать бренды из 1С и бренды сайта, в большенстве случаев это произойдет автоматически (если названия брендов совпадут с уже существующими брендами на сайте, иначе придется делать это вручную)
 
 
Пример данных в XML-файле из 1С:
 
<pre>
 
<Бренды>
 
  <Бренд Номер="Mitsubishi" Название="MITSUBISHI"/>
 
  <Бренд Номер="TO" Название="Toyota"/>
 
  <Бренд Номер="NIS" Название="NISSAN"/>
 
</Бренды>
 
</pre>
 
 
'''Номер''' - идентификатор 1С, который передается в данных с товарами.
 
'''Название''' - Название бренда, используется для связи бренда на сайте.
 
 
=== Товары (прайс) ===
 
 
Сайт работает с прайс-листом, то есть с массивом типа Бренд, Код, Цена, дополнительно можно указывать Название, Наличие и другие параметры.
 
Пример выгрузки:
 
 
<pre>
 
<Товары>
 
  <Товар ID="MZ313366" Name="Консоль" Price="807" Rest="1" Brand="Mitsubishi"/>
 
  <Товар ID="4060A098" Name="Амортизатор пр. пер. Colt (406008)" Price="710" Rest="1" Brand="Mitsubishi"/>
 
</Товары>
 
</pre>
 
 
Название параметров может быть изменено и расширено.
 
 
Обратите внимание, на сайте работает ценообразование, поэтому из 1С выгружать надо закупочные цены, которые после ценообразования для каждого клиента формируются и отображаются розничными. Ценообразование состоит из двух частей:
 
 
1. Наценка на поставщика (увеличение цены согласно указаной в Мпанели)
 
2. Скидка клиента (уменьшение цены согласно группы клиента, указывается в Мпанели)
 
 
=== Контрагенты ===
 
 
Операция аналогичная выгрузке в 1С.
 
 
<pre>
 
<Контрагенты>
 
  <Контрагент ID="НОМЕР001" ФИО="Старовойт Михаил" Логин="mstar" Телефон="0504652966" Email="mikhail.starovoyt@mstarproject.com">
 
  </Контрагент>
 
<Контрагенты>
 
</pre>
 
 
Желательно чтобы в выгрузке присутствовал '''Email''', с помощью почты производится восстановление пароля на сайте.
 
 
Название полей может быть изменено и расширено.
 
 
При выгрузке на сайт клиентов, производится поиск клиента в базе сайта по полю '''Логин''', если клиент найден, происходит обновление его данных, если клиент не найден происходит создание нового клиента.
 
 
 
=== Документы(заказы) ===
 
 
<pre>
 
<Документы>
 
  <Документ>
 
    <ID>729</ID>
 
    <IDМенеджера>1070</IDМенеджера>
 
    <Номер>ТЗ000000148</Номер>
 
    <Дата>2014-12-04</Дата>
 
    <ХозОперация>Заказ товара</ХозОперация>
 
    <Роль>Продавец</Роль>
 
    <Сумма>25,43</Сумма>
 
    <Валюта>840</Валюта>
 
    <Время></Время>
 
    <Комментарий>Доставка Новая Почта; 0.00 USD</Комментарий>
 
    <Статус>В работе</Статус>
 
    <Удален>Нет</Удален>
 
    <Контрагенты>
 
      <Контрагент>
 
<ID>4649</ID>
 
<Наименование>ФЛП Стронов</Наименование>
 
<Роль>Покупатель</Роль>
 
<ПолноеНаименование>ФЛП Стронов</ПолноеНаименование>
 
      </Контрагент>
 
    </Контрагенты>
 
    <Товары>
 
      <Товар>
 
<Наименование>Фильтр воздушный (76)</Наименование>
 
<Артикул>1780130040</Артикул>
 
<Производитель>TOYOTA</Производитель>
 
<КодБренда>2250</КодБренда>
 
<Количество>1</Количество>
 
<Резервировать>Да</Резервировать>
 
<IDПоставщика>241</IDПоставщика>
 
<Статус>Подтвержден</Статус>
 
<Цена>25,43</Цена>
 
<Сумма>25,43</Сумма>
 
      </Товар>
 
    </Товары>
 
  </Документ>
 
</Документы>
 
</pre>
 
  
Название полей может быть изменено и расширено.
 
При выгрузке на сайт заказов, производится поиск заказа в базе сайта по полю '''Номер'''(идентификатор заказа сайта, уникальный) или по полю '''ID''' (идентификатор из 1С, должен быть уникальный), если заказ не найден то создается новый.
 
  
 
== Доработки ==
 
== Доработки ==

Версия 14:36, 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С, создать шаблон модуля довольно сложно, описанные обмены данными это основные моменты работы модуля, которые можно расширять и дополнять, в зависимости от требований заказчика, например: передача из 1С статусов заказов (при условии что менеджеры обрабатывают заказы в 1С), передача в 1С платежей через онлайн-системы (liqpay) и так далее.

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

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