Налаштування YML-вивантаження 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування YML-вивантаження 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Настройка YML-виконання 1С-Бітрікс

YML (Yandex Market Language) — XML-формат, який давно вийшов за межі Яндекс.Маркета. Його використовують прайс-агрегатори (Товари Mail.ru, Price.ru), CRM-системи для імпорту каталогів, партнерські мережі для товарних фідів. У 1С-Бітрікс генерація YML — штатна функція модуля catalog, але настройок за замовчуванням хватає тільки для найпростіших каталогів.

Базова настройка профіля експорту

Магазин → Налаштування → Експорт каталогу → Додати профіль → Яндекс.Маркет (YML). Параметри:

  • Інфоблок каталогу — з якого інфоблоку експортувати товари.
  • Тип ціни — який тип ціни потрапить у тег <price>. Вибирається один.
  • Валюта — RUR, USD, EUR. Якщо в каталозі ціни в кількох валютах, у фід потрапить ціна, сконвертована у вибрану валюту.
  • Розділи — можна обмежити експорт конкретними розділами інфоблоку.
  • Властивості для експорту — які властивості інфоблоку експортувати як <param>.
  • Файл експорту — шлях до результуючого файлу, наприклад /upload/yml/feed.xml.

Після збереження — кнопка «Експортувати». Файл генерується і доступний за URL.

Структура YML-файлу

Валідний YML містить:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2024-01-15 12:00">
  <shop>
    <name>Назва магазину</name>
    <company>Юрлицо</company>
    <url>https://site.ru</url>
    <currencies>
      <currency id="RUR" rate="1"/>
    </currencies>
    <categories>
      <category id="1">Електроніка</category>
      <category id="2" parentId="1">Смартфони</category>
    </categories>
    <offers>
      <offer id="123" available="true">
        <url>https://site.ru/product/123/</url>
        <price>79990</price>
        <categoryId>2</categoryId>
        <picture>https://site.ru/upload/photo.jpg</picture>
        <name>Смартфон Samsung Galaxy S24</name>
        <vendor>Samsung</vendor>
        <param name="Пам'ять">256 ГБ</param>
      </offer>
    </offers>
  </shop>
</yml_catalog>

<categories> формується з розділів інфоблоку. <offers> — з елементів. Зв'язок через <categoryId>id розділу.

Що стандартний профіль робить невірно

1. Торгові пропозиції. Якщо товар має SKU (інфоблок торгових пропозицій), стандартний профіль генерує <offer> для кожної пропозиції. Але <name> береж з пропозиції, а не з основного товару. Результат: замість «Кроссовки Nike Air Max» — «Кроссовки Nike Air Max — Білий, 42». Для Яндекс.Маркета це нормально, для прайс-агрегатора — ні.

2. Множественні фото. Стандартний експорт бере DETAIL_PICTURE як основне фото. Додаткові фото з множественної властивості (наприклад, MORE_PHOTO) потрібно явно додати в налаштуваннях профіля. Кожне фото — окремий тег <picture>.

3. Фільтрація. Немає фільтра «тільки товари з залишком > 0». Експортуються всі активні елементи. Щоб скрити товари без залишків — або деактивувати їх (ламає SEO), або доопрацьовувати профіль.

4. Спецсимволи. Символи &, <, > в описі ламають XML. Стандартний профіль екранує їх, але якщо в властивостях інфоблоку зустрічається «сирий» HTML — фід може стати невалідним. Перевіряйте через xmllint або онлайн-валідатор YML.

Доопрацювання профіля експорту

Файл обробника: /bitrix/modules/catalog/load/yandex_run.php. Не редагуйте його напряму — втратите при оновленні. Скопіюйте в /bitrix/php_interface/include/catalog_export/ під новим іменем і зареєструйте як спеціальний профіль.

Частші доопрацювання:

  • Фільтр за залишками. Додайте в arFilter умову >CATALOG_QUANTITY => 0 або перевірку через CCatalogStoreProduct для мультискладовості.
  • Власний формат <name>. Формуйте назву як «Бренд + Модель + Ключова властивість» замість стандартного NAME.
  • <oldprice> для знижок. Стандартний профіль не експортує перекреслена ціну. Додайте тег <oldprice>, підставляючи значення з іншого типу ціни (наприклад, «Роздрібна до знижки»).
  • <delivery-options>. Тег для Яндекс.Маркета з умовами доставки. Не генерується стандартним профілем.
  • <sales_notes>. Примітка для покупця (мінімальна сума замовлення, умови). До 50 символів.

Автоматична генерація

Cron-завдання для регулярного оновлення фіду:

*/30 * * * * /usr/bin/php /var/www/bitrix/modules/catalog/load/yandex_run.php PROFILE_ID

Або через агент Бітрікс в налаштуваннях профіля — опція «Періодичний експорт». Агент запускається через cron_events.php. Інтервал — 30–60 хвилин для більшості магазинів.

Для каталогів 50 000+ товарів генерація YML може займати 3–5 хвилин. Переконайтеся, що max_execution_time у PHP достатній, або використовуйте пошагову генерацію (розбивка на N елементів за ітерацію).

Завдання Час
Базова настройка стандартного профіля 30 хв
Спеціальний профіль з фільтрацією та додатковими тегами 3–5 год
Профіль + cron + моніторинг валідності 1 день