# Яндекс YML

Пример для настройки импорта стандартного YML (XML) файла от Яндекс, товары и группы

#### Настраиваем загрузку групп

{% code lineNumbers="true" %}

```xml
<yml_catalog>
    <shop>
        <categories>
            <category id="123">Бытовая техника</category>
            <category id="456" parentId="123">Холодильники</category>
            ...
        </categories>
    ...
    </shop>
</yml_catalog>
```

{% endcode %}

<figure><img src="/files/m8rXMa3omIrejiAgSiRK" alt=""><figcaption></figcaption></figure>

XPath путь до групп: `shop/categories/category`.

Так как группы уже получены и XPath-курсор находится внутри узла `category`, пути к его атрибутам будут следующими:

* ID группы — `@id`
* ID родительской группы — `@parentId`

Название группы находится в текстовом содержимом текущего узла `category`, поэтому отдельный XPath путь для него указывать не требуется.

#### Настраиваем загрузку товаров

{% code lineNumbers="true" %}

```xml
<yml_catalog>
    <shop>
        <offers>
            <offer id="123" available="true">
                ...
            </offer>
            <offer id="456" available="false">
                ...
            </offer>
            ...
        </offers>
    ...
    </shop>
</yml_catalog>
```

{% endcode %}

<figure><img src="/files/Q8mrOvR9LrLqXdnoXhio" alt=""><figcaption></figcaption></figure>

XPath путь до товаров: `shop/offers/offer`.

#### Настраиваем xpath для свойств

Обычно в YML Яндекса все свойства товара находятся в тегах `param`. В соответствии полей нужно указать путь до этих тегов и настроить, откуда брать название и значение свойства.

{% code lineNumbers="true" %}

```xml
<offer id="123" available="true">
  ...
  <param name="Цвет">белый</param>
  <param name="Инвертор">Да</param>
</offer>
...
```

{% endcode %}

<figure><img src="/files/ktgyPaSt1wiK2FduMMP1" alt=""><figcaption></figcaption></figure>

Так как товары уже получены и XPath-курсор находится внутри узла `param`, путь до свойств будет:

* Название свойства — `@name`

Значение свойства находится в текстовом содержимом текущего узла `param`, поэтому отдельный XPath путь для него указывать не требуется.

#### Настраиваем соответствие полей для товара

```xml
<offer id="123" available="true">
    <url>https://market.morozovpimnev.ru/bytovaya-texnika/krupnaya-texnika-dlya-kuxni/xolodilniki/xolodilnik-lg-doorcooling-ga-b459smqz/</url>
    <price>39990</price>
    <currencyId>RUR</currencyId>
    <categoryId>456</categoryId>
    <picture>https://market.morozovpimnev.ru/upload/shop_5/2/item_2927/item_2927.jpg</picture>
    <name>Холодильник LG DoorCooling+ GA-B459SMQZ</name>
    <vendor>LG</vendor>
    <vendorCode>20062601</vendorCode>
    <description>
    <![CDATA[ С холодильником LG DoorCooling+GA-B459SMQZ вы сможете легко сделать много запасов на зиму и сохранить свежесть продуктов надолго. Благодаря стильному дизайну прибор удачно впишется в интерьер вашей кухни и станет его гармоничным дополнением. ]]>
    </description>
    <param name="Цвет">белый</param>
    <param name="Инвертор">Да</param>
    <weight>68</weight>
    <dimensions>68/59/186</dimensions>
</offer>
...
```

Так как товары уже получены и XPath-курсор находится внутри узла `offer`, пути к его свойствам будут следующими:

<figure><img src="/files/OLpvEz9US09G6kmCCEIR" alt=""><figcaption></figcaption></figure>

`@available` - доступность товара, можно загружать в склад, если true добавит наличие 1, если false - 0, <mark style="color:$success;">обновляем</mark> всегда, чтобы получать акутальное наличие

`price` - цены, <mark style="color:$success;">обновляем</mark> всегда, чтобы получать акутальную цену

`currencyId` - код валюты, <mark style="color:$success;">обновляем</mark> всегда, чтобы получать акутальную валюту

`categoryId` - если у вас загружаются группы из файла, то новый товар попадет в эту группу, уже существующий попадет если стоит параметр <mark style="color:$success;">"обновлять"</mark>

`picture` - изображение товара, лучше ставить <mark style="color:$info;">"не обновлять"</mark>, чтобы для уже существующих товаров не тратить ресурсы и время на повторную загрузку файла

`name` - название товара, можно <mark style="color:$info;">"не обновлять"</mark> если ничего не меняется

`vendor` - название производителя (создаем новый если такое название не находит в магазине), можно <mark style="color:$info;">"не обновлять"</mark> если ничего не меняется

`vendorCode` - артикула товара (если в настройках импорта настроен поиск по полю артикул, то по нему будет будет осуществляься поиск уже существующих твоаров для обновления), можно <mark style="color:$info;">"не обновлять"</mark> если ничего не меняется

`description` - описание товара, можно <mark style="color:$info;">"не обновлять"</mark> если ничего не меняется

`param` - свойства товара, модуль сам соберет в массив все свойства из узла с этим тегом, можно <mark style="color:$info;">"не обновлять"</mark> если ничего не меняется

`weight` - вес товара, можно <mark style="color:$info;">"не обновлять"</mark> если ничего не меняется

`{кг}` - единици измерения веса, т.к. Яндекс передает вес в кг, то можно явно указать это в импорте, например если у вас в магазине товары в граммах, то модуль переведет его в единицы магазина, можно <mark style="color:$info;">"не обновлять"</mark> если ничего не меняется

`dimensions` - габариты товара, можно <mark style="color:$info;">"не обновлять"</mark> если ничего не меняется, модуль сам разабъет их на ДШВ

`{см}` - единици измерения габаритов, т.к. Яндекс передает габариты в см, то можно явно указать это в импорте, например если у вас в магазине товары в мм, то модуль переведет их в единицы магазина, можно <mark style="color:$info;">"не обновлять"</mark> если ничего не меняется


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.morozovpimnev.ru/megaimport/yandeks-yml.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
