SFCC - Помощь в экспорте всех продуктов из Salesforce Commerce Cloud (Demandware) в XML или CSV

Мы пытаемся перенести магазин из SFCC в Shopify, но у нас возникают проблемы с экспортом продуктов из Salesforce Commerce Cloud (ранее Demandware).

Я просмотрел довольно много документации от SFCC, но я не нашел простого экспорта продукта. Интересно, могу ли я неправильно понять их терминологию.

Я нашел эту шпаргалку:https://documentation.b2c.commercecloud.salesforce.com/DOC2/index.jsp?topic=%2Fcom.demandware.dochelp%2FImportExport%2FImportExportObjectCheatsheet.html&resultof=%22%70%72%6f%64 % 75%63%74% 22% 20% 22% 65%78%70%6f%72%74% 22% 20

Он указал мне на "Импорт / экспорт объекта каталога"https://documentation.b2c.commercecloud.salesforce.com/DOC2/index.jsp?topic=%2Fcom.demandware.dochelp%2FImportExport%2FCatalogObjectImportExport.html

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

2 ответа

Решение

См. Схему каталога sfcc из схем импорта и экспорта B2C Commerce:

Схема объяснит вам структуру каталога. Каталогу могут быть присвоены продукты или они могут принадлежать каталогу. В SFCC у нас обычно есть главный каталог, в котором представлены продукты. Владение означает, что в каталоге у вас есть определение продукта и все связанные данные о продукте, кроме изображений.

Следовательно, что вам нужно сделать, это попросить вашего клиента экспортировать в ваш главный каталог сайта, который вы хотите перенести. Такая деятельность не требует программирования или создания рабочих мест в SFCC. Вы можете сделать это из Бизнес-менеджера, выполнив этот проход:

  • Инструменты продавца> Продукты и каталоги> Импорт и экспорт> Экспорт каталога - Шаг 1: выберите каталог

Обратите внимание, что продукты в Commerce Cloud имеют модель наследования атрибутов. Продукты, которые имеют несколько вариантов размера или цвета (или другие варианты), будут использовать отношение "Главный" -> "Вариант". Варианты наследуют значения атрибутов из основного продукта, если их собственные атрибуты пусты. Например, вы часто будете видетьname атрибут определен только для основного продукта.

Я ежедневно экспортирую все продукты на SQL Server через задание C#. Ниже приведены важные части кода.

Используя OCAPI Data ProductSearch, вы сначала создаете запрос, чтобы узнать, сколько всего у вас продуктов. Вы можете получить только 200 продуктов за раз, поэтому вам нужно подсчитать общее количество вызовов API.

      var countQuery = "{ \"query\": { \"term_query\": { \"fields\": [\"id\"], \"operator\": \"is_not_null\" }}}";
var countContent = new StringContent(countQuery, Encoding.UTF8, "application/json");
var urlUri = new Uri(url);
var countResponse = await client.PostAsync(urlUri, countContent);
string countResponseString = await countResponse.Content.ReadAsStringAsync();

dynamic countJson = JsonConvert.DeserializeObject(countResponseString);
int records = countJson["total"];
// determine number of times to call api, rounding up.
int calls = (records + (200 - 1)) / 200;

Вытягиваем изделия по 200 за раз в петлю. Мы используем это, чтобы сравнивать список новых и удаленных продуктов каждый день. Также хорошо сравнивать товары с изменением цен. Или просто для экспорта для других целей.

      for (var i = 0; i < calls; i++)
{

    var query = "{ \"query\": { \"term_query\": { \"fields\": [\"id\"], \"operator\": \"is_not_null\" } },\"select\":\"(**)\",\"expand\":[\"all\"], \"start\": " + i * 200 + ", \"count\": 200 }";
    var content = new StringContent(query, Encoding.UTF8, "application/json");
    var response = await client.PostAsync(urlUri, content);
    string responseString = await response.Content.ReadAsStringAsync();

    dynamic json = JsonConvert.DeserializeObject(responseString);

    Console.WriteLine("DW products status: " + i * 200 + " records.");

    foreach (var obj in json.hits)
    {
      // Do stuff (create csv, write to db, etc)
    }
}
Другие вопросы по тегам