- Документация
- YML Export
- YML Export 0.1.10: настройка профилей и выгрузка каталога
YML Export 0.1.10: настройка и создание выгрузки
Руководство описывает версию 0.1.10. Модуль создаёт YML-файл из публичного каталога Битрикса. Профиль хранит настройки одной выгрузки: товары, цену, поля, имя файла и время обновления. Для одного каталога можно создать несколько профилей.
Подготовка и совместимость
Для работы необходимы:
- PHP 8.2 или новее, расширения SimpleXML и DOM;
- установленные модули «Информационные блоки» и «Торговый каталог»;
- права записи (
W) на YML Export и выбранный инфоблок; - доступная PHP-процессу директория загрузок сайта для сохранения файла.
Установщик проверяет версию главного модуля Битрикса не ниже 14.0.0. Работоспособность конкретной установки также зависит от совместимости самого Битрикса с используемой версией PHP.
Экспортируемый каталог, товары и разделы должны быть доступны неавторизованному посетителю. Тип цены должен разрешать покупку публичной группе «Все пользователи» (ID 2) и иметь внешний код XML_ID. Закрытые цены администратора или оптовой группы не становятся публичными через выгрузку.
Проверьте публичный доступ
YML-файл содержит данные для внешней площадки. Защита сайта паролем, HTTP Basic Auth или ограничениями сервера может помешать площадке скачать файл, открыть товар и получить изображения. Авторизованное открытие ссылки в браузере администратора не подтверждает доступ площадки.
Первая выгрузка
1. Выберите каталог
Откройте «Сервисы → Модуль GlobalIT: YML Export». Прямой адрес страницы модуля в административной части сайта:
/bitrix/admin/globalit.ymlexport.index.php?lang=ru
Выберите инфоблок каталога и перейдите к настройкам. Если модуль уже открыл ранее выбранный каталог, используйте «Изменить каталог», когда нужен другой.
Начните с каталога, товары которого должны попасть в файл.
2. Настройте профиль и файл
В блоке «Профиль и файл» задайте основные параметры.
| Поле | Что указать |
|---|---|
| Название профиля | Понятное название набора настроек, например «Маркет — основной ассортимент». Это внутреннее название, а не имя магазина в YML. |
| Назначение файла | Универсальный YML, Яндекс Маркет или Яндекс Директ. Различия режимов описаны ниже. |
| Имя файла | Например, market.xml. Если поле пустое, модуль создаст имя вида catalog-<id профиля>.xml. Расширение .xml добавляется автоматически. |
| ID предложения в YML | ID элемента Битрикса либо XML_ID — внешний код из 1С. Выбор меняет атрибут id у предложения. Подробнее об XML_ID. |
В имени файла разрешены латинские буквы, цифры, точки, дефисы и подчёркивания. Начните имя с буквы или цифры. Не вводите путь, слеши или ... Разные профили должны использовать разные имена файлов.
В блоке «Магазин» можно заполнить:
- «Название магазина» — значение
<shop><name>. Если поле пустое, используется название инфоблока. - «Название компании» — значение
<shop><company>. Если поле пустое, используется введённое название магазина, а при его отсутствии — название инфоблока. - «Адрес магазина» — адрес с
http://илиhttps://, без пути, параметров, логина и пароля. Например,https://shop.example.ru. По этому адресу строятся ссылки на товары и изображения. Если поле пустое, адрес определяется по сайту каталога.
Для первого ручного запуска автоматическое обновление можно оставить выключенным. Настройте его, когда проверите готовый файл.
Основные параметры доступны сразу; необязательные поля YML раскрываются отдельно.
3. Выберите товары, цену и характеристики
Отметьте хотя бы один раздел каталога. Флажок раздела выбирает именно этот раздел. Для включения товаров его дочерних разделов отдельно включите «Включать товары из подразделов выбранных разделов».
В поле «Тип цены для экспорта» выберите цену, которую должна видеть принимающая площадка. В списке доступны только публичные типы цен. Если список пуст, проверьте настройки торгового каталога, внешний код типа цены и права покупки для группы ID 2.
«Дополнительные характеристики» — свойства, которые нужно добавить в <param>, например материал, цвет или размер. Их можно искать по названию или коду. Кнопки «Выбрать показанные» и «Снять показанные» действуют на показанные в списке свойства с учётом поиска.
Фото и непустой системный XML_ID загружаются автоматически: выбирать их в характеристиках не требуется. Артикул и другие основные поля YML настраиваются отдельно в сопоставлении полей.
При необходимости добавьте фильтры:
- часть названия товара;
- количество на складе — от и до;
- цену после скидки — от и до;
- значения свойств, например цвет или материал.
Для общих условий и условий по свойствам можно выбрать логику «Выполнены все условия» или «Хотя бы одно условие». В одной строке свойства перечисляйте допустимые значения через запятую. Пустые условия не ограничивают выборку.
Состав выгрузки задаётся разделами и необязательными фильтрами.
4. При необходимости настройте поля YML
Откройте «Сопоставление полей YML — необязательно» и свяжите нужные теги со свойствами каталога. В отдельном разделе можно указать единицы характеристик.
Если принимающая площадка использует коллекции, включите добавление разделов как коллекций. Подробности приведены в разделах о полях и назначении файла.
Сопоставление определяет, из каких свойств брать производителя, артикул и другие поля.
5. Проверьте состав и создайте файл
Нажмите «Проверить состав файла». Проверка использует выбранные разделы, фильтры, публичные цены и правила назначения файла. Она показывает количество подходящих предложений, причины пропусков и до трёх примеров. Файл при этой проверке не сохраняется.
Проверяйте состав после изменения фильтров, типа цены или правил YML.
Нажмите «Проверить настройки». На шаге «Подтверждение» проверьте профиль, разделы, тип цены, фильтры и характеристики. Кнопка «Изменить настройки» возвращает к редактированию.
Если всё верно, нажмите «Сохранить и создать YML». Эта команда сохраняет профиль и формирует файл. После успешной выгрузки доступны имя файла, его размер, ссылка, кнопки «Скачать файл» и «Выгрузить ещё раз».
Скопируйте ссылку на созданный файл или скачайте его для проверки.
Обычно файл находится в /upload/yml/; при изменённой директории загрузок путь будет другим. Используйте фактическую ссылку из результата, а не собирайте её вручную. Последующие выгрузки этого профиля обновляют тот же файл.
Несколько профилей и повторные выгрузки
Профиль хранит каталог, разделы, характеристики, фильтры, тип цены, настройки полей, имя файла и расписание. Можно создать отдельные профили для разных площадок или групп товаров одного каталога.
Чтобы открыть сохранённый профиль, выберите его в поле «Переключить профиль» и нажмите «Открыть». Сам выбор в списке не меняет текущую форму. При наличии несохранённых изменений модуль предложит «Остаться» или «Открыть без сохранения».
Для нового профиля выберите «Создать новый профиль» и нажмите «Открыть». Задайте название, настройки и другое имя файла. Когда сохранённых профилей ещё нет, модуль сразу показывает форму нового профиля без пустого переключателя.
«Сохранить профиль» сохраняет настройки без создания файла. Это удобно при настройке расписания и подготовке нескольких выгрузок. Ссылка на готовый файл появляется после первой успешной генерации.
Блок «Последняя выгрузка» показывает состояние и ссылку на последний готовый файл; сообщение об ошибке видно сразу. В подробностях запуска доступны время, число пропусков и длительность. В раскрываемом списке профилей можно сравнить имена файлов, расписания и результаты.
Обновить файл вручную
- Откройте нужный профиль и проверьте его настройки.
- При необходимости нажмите «Проверить состав файла».
- Нажмите «Проверить настройки», затем «Сохранить и создать YML».
- Проверьте новую дату и содержимое файла по его постоянной ссылке.
При сохранении изменённого имени файла изменится и ссылка будущей выгрузки. Обновите URL на принимающей площадке после создания нового файла.
Обновлять файл каждый день
В блоке «Автоматическое обновление»:
- Включите «Обновлять файл каждый день».
- Укажите «Время ежедневного обновления».
- Нажмите «Сохранить профиль».
Время относится к часовому поясу PHP на сервере. У каждого профиля своё ежедневное время. Модуль использует агент Битрикса, который проверяет готовность профилей каждые 300 секунд. После наступления выбранного времени профиль выполняется, если успешного запуска за этот день ещё не было.
Расписание зависит от агентов Битрикса
Указанное время не гарантирует запуск ровно в эту минуту. На сайтах с агентами, выполняемыми при посещениях, обновление может ждать следующего обращения. Для регулярной работы без посетителей администратор сервера должен настроить штатный запуск агентов Битрикса через cron. Модуль не устанавливает системную задачу cron самостоятельно.
Не увеличивайте интервал агента модуля до суток: дневное время каждого профиля проверяет сам модуль. Проверяйте часовой пояс и выполнение агентов в том PHP-процессе, который запускает cron, — они могут отличаться от настроек веб-сервера.
Если обновление завершилось ошибкой, смотрите блок «Последняя выгрузка». Параллельное формирование одного файла блокируется; дождитесь завершения текущего запуска перед повторной попыткой.
ID из Битрикса и XML_ID из 1С
Внешний код элемента Битрикса XML_ID и атрибут offer@id решают разные задачи.
| Механизм | Что попадает в YML |
|---|---|
| Автоматическая характеристика XML_ID | При непустом системном внешнем коде добавляется <param name="XML_ID">…</param>. Работает независимо от выбранного источника ID предложения. |
| ID элемента Битрикса | Атрибут id у <offer> содержит числовой ID элемента. |
| XML_ID — внешний код из 1С | Атрибут id у <offer> содержит системный XML_ID выгружаемого товара или SKU. |
Модуль не создаёт отдельный тег <xml_id>. Для SKU используется внешний код самого торгового предложения.
Например, у элемента Битрикса ID 123, а внешний код — 1c-item-42. При выборе ID Битрикса:
<offer id="123" available="true">
<!-- Остальные поля предложения -->
<param name="XML_ID"><![CDATA[1c-item-42]]></param>
</offer>
При выборе XML_ID атрибут будет id="1c-item-42", а характеристика XML_ID сохранится.
В режиме XML_ID предложения с пустым внешним кодом пропускаются. Все ID внутри файла должны быть уникальными: повторяющийся XML_ID останавливает выгрузку с сообщением об ошибке. Для режима Директа ID также ограничен 100 символами.
Если данные поступают из 1С, сначала обновите каталог, цены и остатки, затем формируйте YML. Интеграция, которая заполняет каталог, и YML Export выполняют отдельные задачи. Руководство GlobalIT REST описывает один из вариантов обмена с 1С; для YML Export этот модуль не является обязательным.
Поля и характеристики YML
Сопоставление свойств с тегами
В блоке «Сопоставление полей YML» доступны:
| Поле YML | Значение и формат |
|---|---|
vendor |
Производитель или бренд. |
vendorCode |
Артикул из выбранного свойства. Символьный код элемента не подставляется автоматически. |
barcode |
Штрихкод. Несколько значений дают отдельные элементы без дубликатов. |
weight |
Вес в килограммах, например 1.25. Поле не пересчитывает граммы в килограммы. |
dimensions |
Длина, ширина и высота в сантиметрах через слеш, например 30/20/10. |
vat |
Код НДС, предусмотренный форматом площадки, например VAT_22. Одна цифра ставки не заменяет код. |
country_of_origin |
Страна производства. |
adult, manufacturer_warranty |
Логические значения. Распознаются true/false, Y/N, 1/0, «Да/Нет». |
typePrefix, model |
Тип товара и модель. |
type |
Тип предложения. Поддержан специальный тип vendor.model; для него нужны непустые vendor и model. |
Без сопоставления поле не формируется. Сопоставленное свойство не нужно дополнительно отмечать в характеристиках: оно может использоваться только для целевого тега.
Для большинства одиночных полей берётся первое значение свойства. Проверьте, что оно заполнено: пустое первое значение не заменяется следующим. Несколько значений артикула объединяются запятыми. Для штрихкодов сохраняются отдельные значения.
Проверьте, где заполнены свойства: у обычного товара или у его SKU. Настройка сопоставления сама по себе не переносит данные между родительским товаром и торговыми предложениями.
Дополнительные характеристики и единицы
Выбранные характеристики формируют <param> с названием свойства. Множественное свойство может дать несколько параметров с одинаковым названием.
В разделе «Единицы характеристик — необязательно» задайте единицу для нужного свойства. Единица добавляется только к выгружаемой характеристике и не пересчитывает значение.
- Для Яндекс Маркета используется атрибут
units. - Для универсального YML и Яндекс Директа используется
unit. - Для характеристики «Размер» в режиме Директа укажите размерную сетку
RU,EU,USилиINT. - Для характеристик длины, ширины, высоты и глубины в режиме Директа укажите
мм,смилим.
Назначение файла
Выбирайте режим по требованиям получателя. Он определяет правила формирования и локальной проверки, но не отправляет файл на площадку.
| Режим | Особенности |
|---|---|
| Универсальный YML | Базовая структура, дата в RFC 3339 с часовым поясом, единицы характеристик в unit. Реальная нулевая цена допускается. |
| Яндекс Маркет | Дата RFC 3339 с часовым поясом, единицы в units, URL предложения не длиннее 512 символов. Локальная проверка допускает реальную нулевую цену. |
| Яндекс Директ | Дата ГГГГ-ММ-ДД ЧЧ:ММ, цена после округления должна быть больше нуля, ID предложения — не длиннее 100 символов. Требуется подходящее изображение товара и включённых коллекций. |
Для Директа модуль выбирает изображения с обеими сторонами не меньше 450 пикселей, размером до 10 МиБ, в форматах JPG, JPEG, PNG, WebP или GIF. Пригодный оригинал предпочтительнее уменьшенной копии. Маленькие изображения искусственно не увеличиваются. Если подходящего изображения нет, локальная проверка не позволяет сохранить такой файл.
Коллекции
Если получатель использует коллекции, можно добавить выбранные разделы как <collections>. Предложение связывается с коллекцией через collectionId. Создаются только коллекции, используемые предложениями в файле.
Коллекция получает название и адрес раздела. Проверьте заполнение адресов и изображений разделов. В режиме Директа для коллекций действуют требования к подходящим изображениям.
Границы формата
Модуль формирует обычные товарные предложения и поддерживает специальный тип vendor.model. Произвольные типы предложений, например для туров, билетов или книг, через интерфейс не настраиваются.
Проверка модуля локальная: структура XML, обязательные значения, уникальность ID, ссылки на категории и коллекции, цены и часть правил выбранного назначения. Она не скачивает внешние страницы и не заменяет проверку импорта, модерации и дополнительных требований принимающей площадки.
Модуль не содержит отправки товаров по API Ozon или Wildberries. Возможность использования файла конкретным получателем проверяйте по его требованиям.
Цены, остатки и торговые предложения
В YML попадают активные товары, действующие по датам активности и доступные гостю. Для выбранных разделов учитывается их активность и публичная доступность.
Цена берётся из выбранного публичного типа и рассчитывается средствами Битрикса с учётом сайта каталога, скидок для гостя и коэффициента единицы измерения. Используется ценовой диапазон, подходящий этому количеству. Индивидуальные цены авторизованного покупателя не выгружаются.
Предложения без доступной цены или с отрицательной ценой пропускаются. Реальная нулевая цена отличается от отсутствующей: она допускается в универсальном режиме и локальной проверке Маркета, а в режиме Директа пропускается. oldprice появляется, только если рассчитанная исходная цена выше текущей после скидки.
SKU выгружаются отдельными <offer>. Родительский товар-контейнер SKU не создаёт дополнительное предложение с агрегированной минимальной ценой. Для связи вариантов используется group_id родительского товара. Категория SKU определяется по выбранному разделу родителя.
Остаток передаётся в count, в том числе дробный. available берётся из признака доступности торгового каталога: при разрешённом заказе отсутствующего товара нулевой остаток может сочетаться с available="true". Для ограничения выгрузки по остатку задайте соответствующий фильтр.
Основные поля предложения: ID, доступность, URL, цена и валюта, категория, название. При заполнении данных добавляются описание, изображения, старая цена, сопоставленные поля и характеристики.
Проверка актуальности файла
- Откройте фактическую ссылку из результата выгрузки или блока «Последняя выгрузка». Убедитесь, что сервер возвращает XML, а не форму входа или ошибку.
- Проверьте атрибут
dateу<yml_catalog>. Он отражает начало формирования файла; формат зависит от выбранного назначения. - Найдите несколько предложений по
offer@idили параметру XML_ID и сравните цену, остаток и доступность с публичным каталогом. - После изменения товара создайте файл повторно и проверьте его содержимое по той же ссылке.
- При автоматическом запуске проверьте время последней успешной выгрузки и отсутствие ошибки в профиле.
Файл сначала формируется и проверяется, затем заменяет предыдущий. Если подходящих предложений нет, XML некорректен или возникла ошибка сохранения, предыдущий готовый файл не заменяется новой неполной выгрузкой. Поэтому существующая ссылка сама по себе не доказывает, что последний запуск прошёл успешно.
Вопросы и устранение ошибок
Почему товары не попали в файл?
Нажмите «Проверить состав файла» и посмотрите причины пропусков. Проверьте разделы и включение подразделов, фильтры, активность и даты товаров, доступ гостя, тип цены и наличие подходящего ценового диапазона. Для режима XML_ID нужен непустой внешний код; для Директа — положительная цена.
Если нет ни одного подходящего предложения, модуль сообщает об этом и не заменяет предыдущий файл.
Почему список типов цен пуст или цена отличается от административной?
Тип цены должен иметь XML_ID и разрешать покупку группе ID 2. Для расчёта используются публичные условия выбранного сайта, скидки и коэффициент единицы измерения. Административная или персональная цена может отличаться. Проверьте публичную цену товара с тем же типом и количеством.
Почему появилась ошибка повторяющегося ID?
При выборе XML_ID проверьте его уникальность у всех выгружаемых товаров и SKU. Одинаковый внешний код у двух предложений не позволяет сформировать однозначный файл. Исправьте внешние коды в каталоге либо используйте ID Битрикса, если это подходит получателю.
Почему не выгружается артикул или производитель?
Укажите источник в блоке «Сопоставление полей YML» и проверьте заполнение выбранного свойства у выгружаемого элемента, включая SKU. Выбор свойства среди дополнительных характеристик добавляет param, но не заменяет сопоставление с vendorCode или vendor.
Почему режим Директа сообщает об изображении?
Нужна подходящая картинка с обеими сторонами от 450 пикселей в поддерживаемом формате. Проверьте исходное изображение товара, а при включённых коллекциях — изображение раздела. Небольшая уменьшенная копия не заменяет подходящий оригинал.
Почему не сохраняется профиль?
Проверьте хотя бы один выбранный раздел, доступный тип цены, корректность времени, имя файла и адрес магазина. У другого профиля не должно быть такого же имени файла. При отказе в доступе проверьте права записи на модуль и инфоблок. Если сессия администратора истекла, обновите страницу и войдите снова.
Почему файл не обновился по расписанию?
Убедитесь, что ежедневное обновление включено и профиль сохранён. Проверьте серверный часовой пояс, наступление выбранного времени, исполнение агентов и сообщение последней ошибки. На сайте без посещений настройте штатный запуск агентов Битрикса через cron. Если файл уже формируется, дождитесь завершения.
Почему площадка не может скачать файл?
Откройте URL без авторизации и проверьте доступ к XML, изображениям и страницам товаров. Убедитесь, что адрес магазина и домен правильные, сервер не требует пароль и не возвращает HTML вместо файла. Используйте ссылку из результата выгрузки.
Что делать при ошибке PHP 8.4 после установки?
Обновите модуль до 0.1.10 и повторите установку или запуск. Проверьте фактическую версию модуля и PHP веб-сервера, а для расписания — также PHP процесса cron. Если ошибка сохраняется, передайте поддержке полный текст ошибки, версию PHP, Битрикса и модуля. Не публикуйте пароли, содержимое настроек подключения к БД или административную сессию.
Есть ли предел размера каталога?
Формирование пока собирает данные и XML в памяти PHP. Универсальный гарантированный предел числа товаров не установлен: результат зависит от каталога, изображений, настроек PHP и сервера. Для большой выгрузки проверьте время и потребление памяти на своём каталоге; при необходимости разделите ассортимент на несколько профилей.





