актуально
Разбор обмена с 1С с реальными примерами

Разбор обмена с 1С с реальными примерами

Ранее мы подробно рассмотрели принцип формирования файлов обмена между магазином и 1С, сейчас рассмотрим на реальном примере.

В публикации используем укороченные варианты файлов обмена с одним-двумя товарами для упрощения представления.

При обмене в каталоге /upload/1c_catalog/ поочередно появятся файлы:

goods - папка с информацией по основным (родительским) товарам каталога 
     1 - одна или более вложенных папок. Папки пронумерованы согласно числу пакетов в обмене 
          import_files - папка с файлами прикрепленными к товарам 
               fb - одна или более вложенных папок. Отдельная папка на каждый набор файлов к каждому товару 
                    fb**-****-****-****a.jpg 
                    fb**-****-****-****b.jpg - Одно и более изображений прикрепленных к товару 
          import___***.xml - файл с родительскими товарами 
          offers___***.xml - файл с торговыми предложениями 
          prices___***.xml - файл с ценами 
          rests___***.xml - файл с остатками 
properties - папка 
     1 - одна или более вложенных папок пронумерованных согласно числу пакетов в обмене 
          import___***.xml - файл со свойствами родительских товаров 
          offers___***.xml - файл со свойствами торговых предложений 
import___***.xml - корневой файл с информацией о товарах участвующих в обмене 

В описании будем использовать понятие родительского товара и его торговых предложений. Например, родительский товар - это рубашка модели X, а ее торговые предложения - это цвета и размеры рубашки модели X.

Корневой уровень

Структура корневого файла import___***.xml

<?xml version="1.0" encoding="UTF-8"?> <КоммерческаяИнформация ВерсияСхемы="2.10" ДатаФормирования="2018-02-15T18:07:58" Ид=""> <Классификатор СодержитТолькоИзменения="true"> <Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87</Ид> <Наименование>Каталог оборудования</Наименование>

Первые 2 строки - стандартный заголовок любого xml файла. Далее идет важная часть - открытие тега Классификатор и его уникальный код - Ид, который совпадает с xml_id каталога в 1С и инфоблока на стороне сайта.

Первый блок данных помещаемых после наименования классификатора - это блок с категориями в которые входят товар в обмене. В нашем примере товар находится в категории Блендер, которая вложена в категорию Барное оборудование. На одном уровне с категорией Блендер находится категория Миксер. В корневом файле перечисляется вся иерархия категорий товаров входящих в текущий сеанс обмена.

<Группы> <Группа> <Ид>3</Ид> <НомерВерсии>123</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <Наименование>Барное оборудование</Наименование> <Группы> <Группа> <Ид>45</Ид> <НомерВерсии>123</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <Наименование>Блендер</Наименование> </Группа> <Группа> <Ид>601</Ид> <НомерВерсии>123</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <Наименование>Миксер</Наименование> </Группа> </Группы> </Группа> </Группы>

После дерева категорий каталога идет блок со всеми типами цен, которые представлены у товаров в текущем сеансе. У каждого типа цены есть подчиненный блок с типом налога примененного к данной цене. Если в каталоге присутствует несколько типов цен, они идут поочередно.

<ТипыЦен> <ТипЦены> <Ид>00000000-0000-0000-0000-000000000000</Ид> <НомерВерсии>AAAAAACg8mc=</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <Наименование>Розничная</Наименование> <Валюта>UAH</Валюта> <Налог> <Наименование>НДС</Наименование> <УчтеноВСумме>true</УчтеноВСумме> </Налог> </ТипЦены> </ТипыЦен>

Категории и подкатегории определены, типы цен объявлены - пришло время обозначить все возможные в каталоге единицы измерения.

<ЕдиницыИзмерения> <ЕдиницаИзмерения> <Ид>59235783-139a-11e3-9c5a-0017315f1d87</Ид> <НомерВерсии>AAAAAADeK+w=</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <НаименованиеКраткое>шт</НаименованиеКраткое> <Код>2009</Код> <НаименованиеПолное>Штука</НаименованиеПолное> <МеждународноеСокращение/> </ЕдиницаИзмерения> <ЕдиницаИзмерения> <Ид>9509354d-9900-11dc-be48-0001022c682e</Ид> <НомерВерсии>AAAAAADeK+4=</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <НаименованиеКраткое>наб</НаименованиеКраткое> <Код>2123</Код> <НаименованиеПолное>Набор</НаименованиеПолное> <МеждународноеСокращение/> </ЕдиницаИзмерения> <ЕдиницаИзмерения> <Ид>95093550-9900-11dc-be48-0001022c682e</Ид> <НомерВерсии>AAAAAADeK+8=</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <НаименованиеКраткое>упа</НаименованиеКраткое> <Код>2102</Код> <НаименованиеПолное>Упаковка</НаименованиеПолное> <МеждународноеСокращение/> </ЕдиницаИзмерения> </ЕдиницыИзмерения>

Вот собственно и все содержимое корневого файла. Более подробные данные по каждому отдельному товару содержаться в отдельных папках и файлах выгрузки. Эпилог файла и закрытие классификатора представлен ниже.

</Классификатор> <Каталог СодержитТолькоИзменения="true"> <Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87</Ид> <ИдКлассификатора>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКлассификатора> <Наименование>Каталог оборудования</Наименование> <Описание>Каталог оборудования</Описание> </Каталог> </КоммерческаяИнформация>

Папка Properties

В данной папке находятся файлы с свойствами родительских товаров и торговых предложений. Технически в этих файлах передаются пользовательские справочники и типы свойств элементов.

Структура файла import___***.xml

<?xml version="1.0" encoding="UTF-8"?> <КоммерческаяИнформация ВерсияСхемы="2.10" ДатаФормирования="2018-02-15T18:07:58" Ид=""> <Классификатор СодержитТолькоИзменения="true"> <Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87</Ид> <Наименование>Каталог оборудования</Наименование>

В первую очередь идет стандартная шапка документа полностью идентичная корневому файлу. Далее начинается перечисление справочников и свойств родительских товаров. В примере му оставили образец представления свойств самых распространенных типов - Справочник, Строка, Число

<Свойства> <Свойство> <Ид>23dc3ffd-a160-11e4-80d9-002590c7f1bc</Ид> <НомерВерсии>AAAAAACtqyU=</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <Наименование>Размер противней, мм</Наименование> <Внешний>false</Внешний> <Информационное>true</Информационное> <ТипЗначений>Справочник</ТипЗначений> <ВариантыЗначений> <Справочник> <ИдЗначения>8a2d826f-a2ed-11e4-80d9-002590c7f1bc</ИдЗначения> <Значение>GN 2/1</Значение> </Справочник> <Справочник> <ИдЗначения>f8a3b471-a311-11e4-80d9-002590c7f1bc</ИдЗначения> <Значение>440x350</Значение> </Справочник> <Справочник> <ИдЗначения>c0f86cfd-a184-11e4-80d9-002590c7f1bc</ИдЗначения> <Значение>460х330</Значение> </Справочник> </ВариантыЗначений> </Свойство> <Свойство> <Ид>04f1e7a7-eec5-11dd-b862-003048349d60</Ид> <НомерВерсии>AAAAAACtrbk=</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <Наименование>Краткое описание</Наименование> <Внешний>false</Внешний> <Информационное>true</Информационное> <ТипЗначений>Строка</ТипЗначений> </Свойство> <Свойство> <Ид>82dfae5d-74ac-11e3-93f5-002590c7f1bc</Ид> <НомерВерсии/> <ПометкаУдаления>false</ПометкаУдаления> <Наименование>Ск. ТД Запорожье ОТО</Наименование> <Внешний>false</Внешний> <ТипЗначений>Строка</ТипЗначений> </Свойство> </Свойства>

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

</Классификатор> <Каталог СодержитТолькоИзменения="true"> <Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87</Ид> <ИдКлассификатора>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКлассификатора> <Наименование>Каталог оборудования</Наименование> <Описание>Каталог оборудования</Описание> </Каталог> </КоммерческаяИнформация>

Структура файла offerse___***.xml

По своей основной структуре файл полностью идентичен соседу по папке - файлу index с той лишь разницей, что содержит свойства и справочники не родительских товаров, а торговых предложений и в заголовке содерит отсылки к пакету приложений, а не каталогу.

<?xml version="1.0" encoding="UTF-8"?> <КоммерческаяИнформация ВерсияСхемы="2.10" ДатаФормирования="2018-02-15T18:07:58" Ид=""> <ПакетПредложений СодержитТолькоИзменения="true"> <Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87#</Ид> <Наименование>Пакет предложений (Каталог оборудования)</Наименование> <ИдКаталога>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКаталога> <ИдКлассификатора>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКлассификатора> </ПакетПредложений> <Классификатор СодержитТолькоИзменения="true"> <Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87</Ид> <Наименование>Каталог оборудования</Наименование> <Свойства> <Свойство> <Ид>8</Ид> <НомерВерсии/> <ПометкаУдаления>false</ПометкаУдаления> <Наименование>Наличие</Наименование> <ТипЗначений>Справочник</ТипЗначений> <Внешний>false</Внешний> <ВариантыЗначений> <Справочник> <ИдЗначения>1</ИдЗначения> <Значение>Есть в наличии</Значение> </Справочник> <Справочник> <ИдЗначения>2</ИдЗначения> <Значение>Нет в наличии</Значение> </Справочник> </ВариантыЗначений> </Свойство> <Свойство> <Ид>632dfa04-7819-11e7-bdf3-00118512ca21</Ид> <НомерВерсии/> <ПометкаУдаления>false</ПометкаУдаления> <Наименование>Ск. Киев CM</Наименование> <Внешний>false</Внешний> <ТипЗначений>Строка</ТипЗначений> </Свойство> <Свойство> <Ид>10</Ид> <НомерВерсии/> <ПометкаУдаления>false</ПометкаУдаления> <Наименование>Изменение цены</Наименование> <Внешний>false</Внешний> <ТипЗначений>Число</ТипЗначений> </Свойство> </Свойства> </Классификатор> </КоммерческаяИнформация>

Папка Goods

Исходя из самого названия папки - в ней содержатся файлы характеризующие родительский товар и все, что с ним связанно. Внутри папки находится от одной до множества подпапок в зависимости от общего объема файлов выгрузки и настроек модуля обмена в части размера блока единовременно выгружаемой информации и времени на один шаг обмена.

Структура файла import___***.xml

Файл содержащий всю информацию о наших родительских товарах

<?xml version="1.0" encoding="UTF-8"?> <КоммерческаяИнформация ВерсияСхемы="2.10" ДатаФормирования="2018-02-15T18:08:08" Ид=""> <Каталог СодержитТолькоИзменения="true"> <Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87</Ид> <ИдКлассификатора>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКлассификатора> <Наименование>Каталог оборудования</Наименование> <Товары> <Товар> <Ид>d38c7a0c-69cc-11dd-ac15-003048349d60</Ид> <НомерВерсии>AAAAAAEXKVk=65273</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <Штрихкод/> <Артикул>6013.1106</Артикул> <Наименование>Гастроемкость Rational 6013.1106</Наименование> <БазоваяЕдиница>2009</БазоваяЕдиница> <Группы> <Ид>45</Ид> <Ид>601</Ид> </Группы> <Описание>Гастроемкость GN 1/1</Описание> <Картинка>import_files/c6/c66eee80-d466-11e3-93ff-002590c7f1bc_c66eee8b-d466-11e3-93ff-002590c7f1bc.jpeg</Картинка> <Изготовитель> <Ид>56e0270a-a30a-11dc-adbb-000347ea73e3</Ид> <Наименование>Rational</Наименование> <ОфициальноеНаименование>Rational</ОфициальноеНаименование> </Изготовитель> <ЗначенияСвойств> <ЗначенияСвойства> <Ид>8</Ид> <Значение>2</Значение> </ЗначенияСвойства> <ЗначенияСвойства> <Ид>632dfa04-7819-11e7-bdf3-00118512ca21</Ид> <Значение>3</Значение> </ЗначенияСвойства> <ЗначенияСвойства> <Ид>10</Ид> <Значение>0</Значение> </ЗначенияСвойства> </ЗначенияСвойств> <СтавкиНалогов> <СтавкаНалога> <Наименование>НДС</Наименование> <Ставка>20</Ставка> </СтавкаНалога> </СтавкиНалогов> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>Планируемая дата поступления</Наименование> <Значение/> </ЗначениеРеквизита> </ЗначенияРеквизитов> <Вес>0</Вес> </Товар> <Товар> <Ид>78a4a56b-20e6-11e1-9da2-003048349d60</Ид> <НомерВерсии>AAAAAAEXKWo=65273</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <Штрихкод/> <Артикул>6014.1106</Артикул> <Наименование>Гастроемкость Rational 6014.1106</Наименование> <БазоваяЕдиница>2009</БазоваяЕдиница> <Группы> <Ид>45</Ид> <Ид>601</Ид> </Группы> <Описание>Гастроемкостъ RATIONAL</Описание> <Картинка>import_files/cc/ccae7f80-d466-11e3-93ff-002590c7f1bc_ccae7f86-d466-11e3-93ff-002590c7f1bc.jpeg</Картинка> <Изготовитель> <Ид>56e0270a-a30a-11dc-adbb-000347ea73e3</Ид> <Наименование>Rational</Наименование> <ОфициальноеНаименование>Rational</ОфициальноеНаименование> </Изготовитель> <ЗначенияСвойств> <ЗначенияСвойства> <Ид>8</Ид> <Значение>1</Значение> </ЗначенияСвойства> <ЗначенияСвойства> <Ид>632dfa04-7819-11e7-bdf3-00118512ca21</Ид> <Значение>0</Значение> </ЗначенияСвойства> <ЗначенияСвойства> <Ид>10</Ид> <Значение>0</Значение> </ЗначенияСвойства> </ЗначенияСвойств> <СтавкиНалогов> <СтавкаНалога> <Наименование>НДС</Наименование> <Ставка>20</Ставка> </СтавкаНалога> </СтавкиНалогов> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>Планируемая дата поступления</Наименование> <Значение/> </ЗначениеРеквизита> </ЗначенияРеквизитов> <Вес>3</Вес> </Товар> <Описание>Каталог оборудования</Описание> </Каталог> </КоммерческаяИнформация>

Структура файла offers___***.xml

Наш файл с информацией о торговых предложениях имеет знакомый нам заголовок

<?xml version="1.0" encoding="UTF-8"?> <КоммерческаяИнформация ВерсияСхемы="2.10" ДатаФормирования="2018-02-15T18:08:12" Ид=""> <ПакетПредложений СодержитТолькоИзменения="true"> <Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87#</Ид> <Наименование>Пакет предложений (Каталог оборудования)</Наименование> <ИдКаталога>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКаталога> <ИдКлассификатора>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКлассификатора>

Ниже идет часть с основными блоками информации по каждому из предложений

<Предложение> <Ид>d38c7a0c-69cc-11dd-ac15-003048349d60</Ид> <НомерВерсии>AAAAAAEXKVk=65273</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <Наименование>Гастроемкость Rational 6013.1106</Наименование> <Штрихкод/> <ЗначенияСвойств> <ЗначенияСвойства> <Ид>632dfa04-7819-11e7-bdf3-00118512ca21</Ид> <Значение>3</Значение> </ЗначенияСвойства> <ЗначенияСвойства> <Ид>10</Ид> <Значение>0</Значение> </ЗначенияСвойства> </ЗначенияСвойств> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>Планируемая дата поступления</Наименование> <Значение/> </ЗначениеРеквизита> </ЗначенияРеквизитов> </Предложение> <Предложение> <Ид>78a4a56b-20e6-11e1-9da2-003048349d60</Ид> <НомерВерсии>AAAAAAEXKWo=65273</НомерВерсии> <ПометкаУдаления>false</ПометкаУдаления> <Наименование>Гастроемкость Rational 6014.1106</Наименование> <Штрихкод/> <ЗначенияСвойств> <ЗначенияСвойства> <Ид>632dfa04-7819-11e7-bdf3-00118512ca21</Ид> <Значение>0</Значение> </ЗначенияСвойства> <ЗначенияСвойства> <Ид>11</Ид> <Значение/> </ЗначенияСвойства> </ЗначенияСвойств> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>Планируемая дата поступления</Наименование> <Значение/> </ЗначениеРеквизита> </ЗначенияРеквизитов> </Предложение>

И очень простой эпилог с тегом закрытия ПакетаПриложений

</ПакетПредложений> </КоммерческаяИнформация>

Структура файла prices___***.xml - файл присылающий на сайт изменения или актуализацию стоимости товаров

<?xml version="1.0" encoding="UTF-8"?> <КоммерческаяИнформация xmlns="urn:1C.ru:commerceml_2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ВерсияСхемы="2.10" ДатаФормирования="2018-02-15T18:08:13" Ид=""> <ПакетПредложений СодержитТолькоИзменения="true"> <Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87#</Ид> <Наименование>Пакет предложений (Каталог оборудования)</Наименование> <ИдКаталога>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКаталога> <ИдКлассификатора>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКлассификатора> <Предложения> <Предложение> <Ид>d38c7a0c-69cc-11dd-ac15-003048349d60</Ид> <Цены> <Цена> <Представление>1 570 грн. за шт</Представление> <ИдТипаЦены>00000000-0000-0000-0000-000000000000</ИдТипаЦены> <ЦенаЗаЕдиницу>1570</ЦенаЗаЕдиницу> <Валюта>UAH</Валюта> </Цена> </Цены> </Предложение> <Предложение> <Ид>78a4a56b-20e6-11e1-9da2-003048349d60</Ид> <Цены> <Цена> <Представление>4 108 грн. за шт</Представление> <ИдТипаЦены>00000000-0000-0000-0000-000000000000</ИдТипаЦены> <ЦенаЗаЕдиницу>4108</ЦенаЗаЕдиницу> <Валюта>UAH</Валюта> </Цена> </Цены> </Предложение> </Предложения> </ПакетПредложений> </КоммерческаяИнформация>

Структура файла rests___***.xml - файл в котором прилетают фактические остатки наших товаров и предложений в случае их зменения

<?xml version="1.0" encoding="UTF-8"?> <КоммерческаяИнформация ВерсияСхемы="2.10" ДатаФормирования="2018-02-15T18:08:13" Ид=""> <ПакетПредложений СодержитТолькоИзменения="true"> <Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87#</Ид> <Наименование>Пакет предложений (Каталог оборудования)</Наименование> <ИдКаталога>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКаталога> <ИдКлассификатора>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКлассификатора> <Предложения> <Предложение> <Ид>d38c7a0c-69cc-11dd-ac15-003048349d60</Ид> <Остатки> <Остаток> <Количество>0</Количество> </Остаток> </Остатки> </Предложение> <Предложение> <Ид>78a4a56b-20e6-11e1-9da2-003048349d60</Ид> <Остатки> <Остаток> <Количество>4</Количество> </Остаток> </Остатки> </Предложение> </Предложения> </ПакетПредложений> </КоммерческаяИнформация>

Вот собственно и все. Разбор реальных примеров файлов выгрузки - завершен.


Комментарии
Подписаться
Полезность статьи
5 / 5 5 5 2
На основе 2 оценок
100%
0%
0%
0%
0%
Понравилась статья?
Отлично
Комментарий*
Представьтесь
Наконец-то кто-то все это расписал. Я голову сломал пока пытался вытянуть обработчик под Yii
Очень помогло, спасибо

Возврат к списку