Частный программист: 1C+PHP

Файлы обмена между сайтом и 1С

Иногда бывает так. Клиенту нужен интергет-магазин, но у него нет своего 1С-программиста. Он обращается в студию за разработкой интернет-магазина. В студии может тоже не оказаться 1С-программиста, потому что не выгодно в штате держать своего 1С-программиста, так как не всегда возможно его загрузить работой на 8 часов 5 раз в неделю. По этому поводу я сотрудничаю с web-студиями. У меня уже есть готовые обработки по обмену данными между 1С и сайтом. Вариантов может быть несколько. Ниже представлено несколько вариантов обмена данными между 1С и сайтом

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

  1. Заказ покупателя, который формируется в интернет-магазине и уходит в 1С
  2. Список номенклатуры, который формируется в 1С и уходит в интернет-магазин
  3. Остатки номенклатуры, которые формируются в 1С и уходят в интернет-магазин

Заказ покупателя, который формируется в интернет-магазине и уходит в 1С

Вариант №1

Файлик: order.xml

<?xml version="1.0" encoding="windows-1251"?>
<order>
  <number>FD-004210</number>
  <datetime>08.01.2017 22:42</datetime>
  <comment>подпишите пожалуйста флаконы</comment>
  <client>
    <email>donald.trump@whitehouse.gov</email>
    <name>Кулькова Ольга Алексеевна</name>
    <phone>+7 (912) 649-90-83</phone>
    <address>
      <index>Не указан</index>
      <city>г.Нижний Тагил</city>
      <street>пр. Ленина</street>
      <house>56/а</house>
      <apartment>8</apartmentt>
    </address>
  </client>
  <delivery>
    <company_name>экспресс авто</company_name>
    <company_code>56</company_code>
    <date>Не указан</date>
    <method_name>Доставка транспортной компанией в регионы</method_name>
    <method_code>2</method_code>
  </delivery>  
  <payment>
    <payment_name>Наличный расчет или  оплата банковской картой</payment_name>
    <payment_code>1</payment_code>
  </payment>
  <rows>
    <row>
      <code>00001870</code>
      <quantity>5</quantity>
      <price>10.00</price>
      <sum>50</sum>
    </row>
    <row>
      <code>00005830</code>
      <quantity>5</quantity>
      <price>12.00</price>
      <sum>60</sum>
    </row>
    <row>
      <code>021314</code>
      <quantity>5</quantity>
      <price>15.16</price>
      <sum>75.8</sum>
    </row>
  </rows>
</order>

2. Список номенклатуры, который формируется в 1С и уходит в интернет-магазин

Список номенклатуры разбит на два файлика - файлик групп и файлик элементов. Это сделано для того, что бы обмен данными был более надежным. Если их сделать в одном файлике, то может получиться так, что элемент загрузиться при незагруженной группе.

Файлик групп: groups.xml

<?xml version="1.0" encoding="windows-1251"?>
<groups delete_before_load="1">
  <group>
    <parent_code>0044445</parent_code>
    <code>0034245</code>
    <artikul>0034245</artikul>
    <name_short>Брелок-рулетка КРУЖКА (1м)</name_short>
    <name_long></name_long>
    <image_name></image_name>
    <deleted>0</deleted>
  </group>
  <group>
    <parent_code>0034455</parent_code>
    <code>0034445</code>
    <artikul>0034245</artikul>
    <name_short>Поло "Hawaii" женская, белый...</name_short>
    <name_long></name_long>
    <image_name></image_name>
    <deleted>0</deleted>
  </group>
</groups>
<?xml version="1.0" encoding="windows-1251"?>
<items>
  <item>
    <code>0034245</code>
    <parent_code>0</parent_code>
    <name_short>0</name_short>
    <name_long>0</name_long>
    <image_name>0</image_name>
    <deleted>0</deleted>
  </item>
  <item>
    <code>0034245</code>
    <parent_code>0</parent_code>
    <name_short>0</name_short>
    <name_long>0</name_long>
    <image_name>0</image_name>
    <deleted>0</deleted>
  </item>
</items>

3. Остатки номенклатуры, которые формируются в 1С и уходят в интернет-магазин

Вариант 1

<?xml version="1.0" encoding="windows-1251"?>
<rests>
  <item>
    <code>0034245</code>
    <rest>0</code>          
  </item>
  <item>
    <code>0032245</code>
    <rest>9.88</code>          
  </item>
</rests>