Ранее мы подробно рассмотрели принцип формирования файлов обмена между магазином и 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 - корневой файл с информацией о товарах участвующих в обмене
Корневой уровень
Структура корневого файла import___***.xml
<КоммерческаяИнформация ВерсияСхемы="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
<КоммерческаяИнформация ВерсияСхемы="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 с той лишь разницей, что содержит свойства и справочники не родительских товаров, а торговых предложений и в заголовке содерит отсылки к пакету приложений, а не каталогу.
<КоммерческаяИнформация ВерсияСхемы="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
Файл содержащий всю информацию о наших родительских товарах
<КоммерческаяИнформация ВерсияСхемы="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
Наш файл с информацией о торговых предложениях имеет знакомый нам заголовок
<КоммерческаяИнформация ВерсияСхемы="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 - файл присылающий на сайт изменения или актуализацию стоимости товаров
<КоммерческаяИнформация 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 - файл в котором прилетают фактические остатки наших товаров и предложений в случае их зменения
<КоммерческаяИнформация ВерсияСхемы="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Количество>
Остаток>
Остатки>
Предложение>
Предложения>
ПакетПредложений>
КоммерческаяИнформация>
Вот собственно и все. Разбор реальных примеров файлов выгрузки - завершен.