Разбор обмена с 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
<xmp>
<?xml version="1.0" encoding="UTF-8"?>
<КоммерческаяИнформация ВерсияСхемы="2.10" ДатаФормирования="2018-02-15T18:07:58" Ид="">
<Классификатор СодержитТолькоИзменения="true">
<Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87</Ид>
<Наименование>Каталог оборудования</Наименование>
</xmp>
Первые 2 строки - стандартный заголовок любого xml файла. Далее идет важная часть - открытие тега Классификатор и его уникальный код - Ид, который совпадает с xml_id каталога в 1С и инфоблока на стороне сайта.
Первый блок данных помещаемых после наименования классификатора - это блок с категориями в которые входят товар в обмене. В нашем примере товар находится в категории Блендер, которая вложена в категорию Барное оборудование. На одном уровне с категорией Блендер находится категория Миксер. В корневом файле перечисляется вся иерархия категорий товаров входящих в текущий сеанс обмена.
<xmp>
<Группы>
<Группа>
<Ид>3</Ид>
<НомерВерсии>123</НомерВерсии>
<ПометкаУдаления>false</ПометкаУдаления>
<Наименование>Барное оборудование</Наименование>
<Группы>
<Группа>
<Ид>45</Ид>
<НомерВерсии>123</НомерВерсии>
<ПометкаУдаления>false</ПометкаУдаления>
<Наименование>Блендер</Наименование>
</Группа>
<Группа>
<Ид>601</Ид>
<НомерВерсии>123</НомерВерсии>
<ПометкаУдаления>false</ПометкаУдаления>
<Наименование>Миксер</Наименование>
</Группа>
</Группы>
</Группа>
</Группы>
</xmp>
После дерева категорий каталога идет блок со всеми типами цен, которые представлены у товаров в текущем сеансе. У каждого типа цены есть подчиненный блок с типом налога примененного к данной цене. Если в каталоге присутствует несколько типов цен, они идут поочередно.
<xmp>
<ТипыЦен>
<ТипЦены>
<Ид>00000000-0000-0000-0000-000000000000</Ид>
<НомерВерсии>AAAAAACg8mc=</НомерВерсии>
<ПометкаУдаления>false</ПометкаУдаления>
<Наименование>Розничная</Наименование>
<Валюта>UAH</Валюта>
<Налог>
<Наименование>НДС</Наименование>
<УчтеноВСумме>true</УчтеноВСумме>
</Налог>
</ТипЦены>
</ТипыЦен>
</xmp>
Категории и подкатегории определены, типы цен объявлены - пришло время обозначить все возможные в каталоге единицы измерения.
<xmp>
<ЕдиницыИзмерения>
<ЕдиницаИзмерения>
<Ид>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</Код>
<НаименованиеПолное>Упаковка</НаименованиеПолное>
<МеждународноеСокращение/>
</ЕдиницаИзмерения>
</ЕдиницыИзмерения>
</xmp>
Вот собственно и все содержимое корневого файла. Более подробные данные по каждому отдельному товару содержаться в отдельных папках и файлах выгрузки. Эпилог файла и закрытие классификатора представлен ниже.
<xmp>
</Классификатор>
<Каталог СодержитТолькоИзменения="true">
<Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87</Ид>
<ИдКлассификатора>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКлассификатора>
<Наименование>Каталог оборудования</Наименование>
<Описание>Каталог оборудования</Описание>
</Каталог>
</КоммерческаяИнформация>
</xmp>
Папка Properties
В данной папке находятся файлы с свойствами родительских товаров и торговых предложений. Технически в этих файлах передаются пользовательские справочники и типы свойств элементов.
Структура файла import___***.xml
<xmp>
<?xml version="1.0" encoding="UTF-8"?>
<КоммерческаяИнформация ВерсияСхемы="2.10" ДатаФормирования="2018-02-15T18:07:58" Ид="">
<Классификатор СодержитТолькоИзменения="true">
<Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87</Ид>
<Наименование>Каталог оборудования</Наименование>
</xmp>
В первую очередь идет стандартная шапка документа полностью идентичная корневому файлу. Далее начинается перечисление справочников и свойств родительских товаров. В примере му оставили образец представления свойств самых распространенных типов - Справочник, Строка, Число
<xmp>
<Свойства>
<Свойство>
<Ид>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</Внешний>
<ТипЗначений>Строка</ТипЗначений>
</Свойство>
</Свойства>
</xmp>
Вот собственно и все содержимое файла. В некоторых случаях, при объемных каталогах данные файлы могут достигать гигантских размеров. Ниже свойств идет уже знакомый нам эпилог с закрытием классификатора.
<xmp>
</Классификатор>
<Каталог СодержитТолькоИзменения="true">
<Ид>46ceb7c2-61c0-11dc-ae32-0017315f1d87</Ид>
<ИдКлассификатора>46ceb7c2-61c0-11dc-ae32-0017315f1d87</ИдКлассификатора>
<Наименование>Каталог оборудования</Наименование>
<Описание>Каталог оборудования</Описание>
</Каталог>
</КоммерческаяИнформация>
</xmp>
Структура файла offerse___***.xml
По своей основной структуре файл полностью идентичен соседу по папке - файлу index с той лишь разницей, что содержит свойства и справочники не родительских товаров, а торговых предложений и в заголовке содерит отсылки к пакету приложений, а не каталогу.
<xmp>
<?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</Внешний>
<ТипЗначений>Число</ТипЗначений>
</Свойство>
</Свойства>
</Классификатор>
</КоммерческаяИнформация>
</xmp>
Папка Goods
Исходя из самого названия папки - в ней содержатся файлы характеризующие родительский товар и все, что с ним связанно. Внутри папки находится от одной до множества подпапок в зависимости от общего объема файлов выгрузки и настроек модуля обмена в части размера блока единовременно выгружаемой информации и времени на один шаг обмена.
Структура файла import___***.xml
Файл содержащий всю информацию о наших родительских товарах
<xmp>
<?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</Вес>
</Товар>
<Описание>Каталог оборудования</Описание>
</Каталог>
</КоммерческаяИнформация>
</xmp>
Структура файла offers___***.xml
Наш файл с информацией о торговых предложениях имеет знакомый нам заголовок
<xmp>
<?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</ИдКлассификатора>
</xmp>
Ниже идет часть с основными блоками информации по каждому из предложений
<xmp>
<Предложение>
<Ид>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</Ид>
<Значение/>
</ЗначенияСвойства>
</ЗначенияСвойств>
<ЗначенияРеквизитов>
<ЗначениеРеквизита>
<Наименование>Планируемая дата поступления</Наименование>
<Значение/>
</ЗначениеРеквизита>
</ЗначенияРеквизитов>
</Предложение>
</xmp>
И очень простой эпилог с тегом закрытия ПакетаПриложений
<xmp>
</ПакетПредложений>
</КоммерческаяИнформация>
</xmp>
Структура файла prices___***.xml - файл присылающий на сайт изменения или актуализацию стоимости товаров
<xmp>
<?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</Валюта>
</Цена>
</Цены>
</Предложение>
</Предложения>
</ПакетПредложений>
</КоммерческаяИнформация>
</xmp>
Структура файла rests___***.xml - файл в котором прилетают фактические остатки наших товаров и предложений в случае их зменения
<xmp>
<?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</Количество>
</Остаток>
</Остатки>
</Предложение>
</Предложения>
</ПакетПредложений>
</КоммерческаяИнформация>
</xmp>
Вот собственно и все. Разбор реальных примеров файлов выгрузки - завершен.
Комментарии: