Правила экспорта товаров

Правила экспорта товаров используются для создания профилей экспорта ваших товаров в различные форматы с настройкой событий для запуска экспорта. По сути это последний шаг перед тем, как ваши товары окажутся на вашем сайте. Есть несколько форматов для экспорта: xlsx, csv, xml, yml, json, jsonl.

Настройка правил экспорта товаров

Название профиля - понятное вам название, которое вы будете видеть в списке правил.

Описание - если нужно дополнительно указать информацию.

Активен - активность правила.

Сайт - сайт в системе, товары которого будут экспортированы. После выбора сайта нажмите кнопку сохранить и продолжить редактирование это необходимо для дополнительной проверки ошибок.

Категория - если выбрана категория, то экспортируются только товары этой категории и дочерних категорий. Если нужно выбрать несколько категорий, сделайте выбор категорий несколько раз и они все будут добавлены. Если нужно убрать категории, то удалите из поля слева от иконки лупы все содержимое и сохраните правило.

Также есть настройки для фильтрации экспортируемых товаров, в зависимости от отмеченных опций, будут экспортированы соответствующие товары.

Настройки формата экспорта товаров

Формат экспорта - в каком формате необходимо экспортировать товары.

Кодировка - кодировка файла

Разделитель csv - используется для выбора разделителя если формат экспорта csv, все значения экспортируются в кавычках.

Включать BOM - если необходимо.

Настройки экспорта характеристик - все подробно описано прямо на странице настроек, здесь мы ничего новго написать не можем, если не отмечен экспорт характеристик, то их в файле и не будет.

Настройки экспорта характеристик товаров

Для экспорта в форматы xml, yml, json, jsonl доступен расширенный набор информации для характеристик, вариантов использования много, как минимум вы можете с помощью такого файла сразу создавать правильные типы характеристик, устанавливать какие из них являются фильтрами, сразу создавать фильтры, а также все это дело удалять, если они исчезли. Для этого со своей стороны в зависимости от вашей системы управления сайтом может потребоваться дописать функции, которые это будут делать. Для полной автоматизации это необходимо сделать. Мы сделали максимально гибкие настройки экспорта, все остальное делается с вашей стороны, возможно у вас это уже есть и делать ничего не нужно.

Маппинг полей для экспорта - здесь описан список полей в системе и их название, которое необходимо использовать при создании шаблона экспорта:

Доступные поля для экспорта

Для добавления данных в файл экспорта нужно добавить список полей, которые необходимо экспортировать. Мы не навязываем вообще ни каких форматов и ограничений, поэтому по-умолчанию не экспортируется вообще ничего и нужно все необходимые поля добавить:

Соответствие полей экспорта

Тип поля - есть три варианта:

Прямое - поле экспортируется как есть

Тип поля: "Прямое поле"
Исходное поле: supplier_code (имя поля в модели)
Имя в экспорте: vendor_code

Пример экспорта json

{
 "vendor_code": "DDF453",
 "product_name": "Дрель аккумуляторная Makita 18V",
 "price_value": 12990.00,
 "brand_name": "Makita"
}

Соответствие полей

Исходное полеПример значения
supplier_code"DDF453"
name"Дрель аккумуляторная Makita 18V"
price12990.00
brand__name"Makita"

Вычисляемое поле - позволяет создавать новые поля путем комбинации существующих полей с помощью формул.
Настройки в админке:

Тип поля: "Вычисляемое поле"

Имя в экспорте: full_name

Формула вычисления: {brand__name} {name} ({supplier_code})

Пример работы

Исходные данные

brand_name = "Makita"
name = "Дрель аккумуляторная"
supplier_code = "DDF453"

Результат вычисления

"Makita Дрель аккумуляторная (DDF453)"

Другие примеры формул

ФормулаРезультатОписание
{name} - {price} {currency}"Дрель аккумуляторная - 12990 RUB"Название с ценой
{brand__name} {model}"Makita DDF453"Бренд + модель
{price} * 1.215588.0Цена с наценкой 20%
IF({availability}, "В наличии", "Нет")"В наличии"Условное форматирование
CONCAT({name}, " (", {manufacturer_code}, ")")"Дрель (M123)"Конкатенация с разделителями
ROUND({weight_kg} * 1000, 0)1800Вес в граммах
FORMAT("{:.2f} €", {price} / 100)"129.90 €"Форматирование валюты

Сложный пример с условной логикой

Формула:
IF({availability}, 
  CONCAT("В наличии: ", {stock}, " шт."), 
  "Под заказ"
)

Результат для товара в наличии (stock=15)

"В наличии: 15 шт."

Результат для товара не в наличии

"Под заказ"

Шаблон XML\YML - позволяет создавать сложные XML/HTML структуры для форматов XML\YML.
Настройки в админке

Тип поля: "Шаблон XML\YML"

Имя в экспорте: offer_xml

Шаблон

<offer id="{supplier_code}" available="{availability}">
 <name>{name}</name>
 <price>{price}</price>
 <currencyId>{currency}</currencyId>
 <categoryId>{category__external_numeric_id}</categoryId>
 <vendor>{brand__name}</vendor>
 <description><![CDATA[{description}]]></description>
 {FOR images IN _shared_images}
 <picture>{images}</picture>
 {ENDFOR}
 {FOR spec IN specifications}
 <param name="{spec.name}">{spec.value}</param>
 {ENDFOR}
</offer>

Пример работы

Исходные данные товара

{
   "supplier_code": "DDF453",
   "availability": True,
   "name": "Дрель аккумуляторная Makita",
   "price": 12990.00,
   "currency": "RUB",
   "category": {"external_numeric_id": 1001},
   "brand": {"name": "Makita"},
   "description": "Профессиональная дрель",
   "images": ["img1.jpg", "img2.jpg"],
   "specifications": [
       {"name": "Мощность", "value": "500 Вт"},
       {"name": "Вес", "value": "1.8 кг"}
   ]
}


Результат применения шаблона

<offer id="DDF453" available="true">
 <name>Дрель аккумуляторная Makita</name>
 <price>12990.00</price>
 <currencyId>RUB</currencyId>
 <categoryId>1001</categoryId>
 <vendor>Makita</vendor>
 <description><![CDATA[Профессиональная дрель]]></description>
 <picture>img1.jpg</picture>
 <picture>img2.jpg</picture>
 <param name="Мощность">500 Вт</param>
 <param name="Вес">1.8 кг</param>
</offer>

Исходное поле - поле, которое экспортируется, здесь необходимо писать точно название поля в системе, все поля описаны в доступных полях для экспорта.

Имя в экспорте - имя поля или заголовок столбца, которое будет в экспортируемом файле, т.е. если вам нужно название поля отличное от названия в системе, пишете свое, поле обязательно для заполнения.

Формула вычисления - поле для записи формулы вычисляемых полей, подробно описано выше.

Шаблон - поля для записи шаблона для типа поля шаблон xml\yml, подробно описано выше.

Порядок - порядок полей в экспортируемом файле.

Стоит обратить внимание на экспорт в формат YML. Здесь также как и в другие форматы нет ограничений, вы можете сконструировать любой формат полностью отойдя от стандартов. Но для экспорта стандартных полей кроме создания xml шаблонов, можно выбирать прямое поле и писать как переменные, так и сами поля в системе. Стандартные поля: vendor, name, description и т.д.

Расписание экспорта

Расписание и автоматический запуск - настройка автоматизации экспорта. Чтобы получать обновления всех данных на ваших сайтах, вам нужно настроить расписание выгрузки. Есть несколько вариантов:

CRON - расписание в cron формате, файлы будут экспортироваться согласно расписанию, при этом с вашей стороны не обязательно проверять файл по крону, пытаясь угадать когда он будет готов, разные файлы имеют разное время генерации, как получать достоверно готовый файл будет описано ниже.

Запускать после обновления цен - если вы используете функции обновления цен и остатков, то настройте специальный формат, который вы используете для обновления цен и установите эту опцию. После того, как завершилось обновление цен определенного сайта, сразу запустится экспорт правил, к которым относится этот сайт и у которых есть соответствующая опция. Как получать файл автоматически смотрите ниже.

Интеграции - здесь настраивается полная автоматизация получения вашим сайтом обновленного файла.

Webhook url - это url, на который отправляются успешные и\или с ошибками уведомления, стандартное уведомление:

{
 "event": "export.completed",
 "timestamp": "2024-01-24T15:30:45+03:00",
 "profile": {
   "id": "550e8400-e29b-41d4-a716-446655440000",
   "name": "Экспорт для Яндекс.Маркета",
   "site": "Мой магазин",
   "format": "yml"
 },
 "task": {
   "id": "660f9500-e29b-41d4-a716-446655440001",
   "status": "completed",
   "triggered_by": "scheduled",
   "created_at": "2024-01-24T15:00:00+03:00",
   "started_at": "2024-01-24T15:00:05+03:00",
   "finished_at": "2024-01-24T15:30:40+03:00",
   "duration": "00:30:35"
 },
 "statistics": {
   "total_items": 1500,
   "exported_items": 1495,
   "skipped_items": 5,
   "errors_count": 3
 },
 "file": {
   "url": "https://storage.example.com/exports/export_20240124_1530.yml",
   "name": "export_20240124_1530.yml",
   "size": 2457600,
   "size_mb": 2.34
 },
 "callback_token": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
}

Дополнительные заголовки

POST /webhook/export HTTP/1.1
Host: example.com
Content-Type: application/json
User-Agent: Magazin-Export-System/1.0
X-Export-Signature: sha256=7d3f3e8a2c1b5d4e6f7a8b9c0d1e2f3a4b5c6d7e
X-Export-Profile-ID: 550e8400-e29b-41d4-a716-446655440000
X-Export-Task-ID: 660f9500-e29b-41d4-a716-446655440001

Таким образом, независимо от расписания при соответствующих настройках после завершения экспорта будет отправлен запрос на ваш url, простейший вариант это скрипт. который получит запрос, загрузит по ссылке готовый файл и обновит цены, остатки, данные о товарах и все остальное для чего вы хотите его использовать.

С другой стороны, вы можете вызывать экспорт по запросу, отправив запрос на callback url используя callback токен, после сохранения правил они будут доступны для просмотра на этой же странице, вам остается только отправлять запрос. при получении запроса запускается экспорт.

Имена файлов всегда остаются постоянными и доступны по прямой ссылке, название файла вы можете увидеть в списке задач экспорта, для каждого правила свой уникальный файл.