Разбор обмена с 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>

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


Комментарии:

Related posts