Tec.Delivery — методология синхронизации SCU для 1С

Документ описывает правила полной и инкрементальной синхронизации категорий и товаров между 1С и Tec.Delivery.

SCU: 1С → Tec.Delivery Батчи: ≤ 100 элементов Пагинация: обязательна Перевод/изображения: асинхронно

Общая идея

Синхронизация каталога между 1С и Tec.Delivery выполняется батчами с обязательной пагинацией. Максимальный размер батча: 100 элементов.

На стороне 1С используется API каталога (условное имя /api/catalog), на стороне Tec.Delivery — Product Management API (общий endpoint).

3 этапа синхронизации

  1. Синхронизация категорий верхнего уровня (parent=0)
  2. Рекурсивная синхронизация вложенных категорий (parent=ID категории)
  3. Синхронизация товаров (type=product)

1) Синхронизация категорий верхнего уровня parent=0

Шаг 1.1 — Получение категорий верхнего уровня из 1С

Пример запроса к API 1С:

/api/catalog?limit=100&offset=0&modified_since=2026-02-11T00:00:00&type=category&parent=0

Пример ответа 1С:

{
  "count": 120,
  "data": [
    {
      "id": "9b2a2ade-c1f1-11e6-9cd7-10bf484d6226",
      "parent": "0",
      "name": "Алкогольная продукция",
      "type": "category"
    },
    {
      "id": "01f9449e-c385-11e6-9cd7-10bf484d6226", // <-- "id"
      "parent": "0",
      "name": "Бакалея",
      "type": "category"
    }
  ]
}

Шаг 1.2 — Отправка полученного батча в Tec.Delivery Product Management API

Endpoint: https://api.tec.delivery/common/merchant/1.0/

Пример запроса:

{
  "api": "product",
  "method": "put-products",
  "token": "token",
  "language": "RU",
  "translate": true,
  "payload": [
    {
      "external_id": "9b2a2ade-c1f1-11e6-9cd7-10bf484d6226",
      "name": "Алкогольная продукция",
      "is_category": true
    },
    {
      "external_id": "01f9449e-c385-11e6-9cd7-10bf484d6226",
      "name": "Бакалея",
      "is_category": true
    }
  ]
}

2) Рекурсивная синхронизация вложенных категорий parent=category_id

Шаг 2.1 — Получение вложенных категорий по parent (рекурсивно)

Для каждой категории, полученной на шаге 1, необходимо запросить её дочерние категории. Процесс повторяется рекурсивно, пока не будут пройдены все уровни вложенности.

Пример запроса к API 1С:

/api/catalog?limit=100&offset=0&modified_since=2026-02-11T00:00:00&type=category&parent=9b2a2ade-c1f1-11e6-9cd7-10bf484d6226

Пример ответа 1С:

{
  "count": 9,
  "data": [
    {
      "id": "ae1441c0-c37c-11e6-9cd7-10bf484d6226",
      "parent": "9b2a2ade-c1f1-11e6-9cd7-10bf484d6226",
      "name": "Вино",
      "type": "category"
    }
  ]
}

Шаг 2.2 — Отправка полученного батча вложенных категорий в Tec.Delivery

Пример запроса:

{
  "api": "product",
  "method": "put-products",
  "token": "token",
  "language": "RU",
  "translate": true,
  "payload": [
    {
      "external_id": "ae1441c0-c37c-11e6-9cd7-10bf484d6226", // <-- "id"
      "external_parent_id": "9b2a2ade-c1f1-11e6-9cd7-10bf484d6226", // <-- "parent"
      "name": "Вино",
      "is_category": true
    }
  ]
}

3) Синхронизация товаров type=product

Шаг 3.1 — Получение товаров из 1С

Пример запроса к API 1С:

/api/catalog?limit=100&offset=0&modified_since=2026-02-11T00:00:00&type=product

Пример ответа 1С:

{
  "count": 240,
  "data": [
    {
      "id": "b01a1a32-8ba2-11e6-9cf3-10bf484d6226",
      "parent": "551b4ed9-c385-11e6-9cd7-10bf484d6226",
      "type": "product",
      "bulk": false,
      "name": "Рис длинный пропаренный 800г Гудвилл",
      "sku": "4607120230971",
      "price": 145,
      "stock": 16,
      "modified_at": "2026-02-13T13:24:04",
      "description": "…",
      "composition": "рис",
      "nutrition": "Б: 6,5, Ж: 1, У: 79, Ккал: 351",
      "image_url": "https://…/images/b01a1a32-8ba2-11e6-9cf3-10bf484d6226.jpg",
      "image_hash": "f9a15f0d6ebf943aea177f597cb96689c2d5c44d"
    }
  ]
}

Шаг 3.2 — Отправка полученного батча товаров в Tec.Delivery Product Management API

Endpoint: https://api.tec.delivery/common/merchant/1.0/

Пример запроса:

{
  "api": "product",
  "method": "put-products",
  "token": "53ec835c-631d-11f0-a416-fa163eed394d",
  "language": "RU",
  "translate": true,
  "webhook": "https://...",
  "payload": [
    {
      "external_id": "b01a1a32-8ba2-11e6-9cf3-10bf484d6226",        // <-- "id"
      "external_parent_id": "551b4ed9-c385-11e6-9cd7-10bf484d6226", // <-- "parent"
      "description": "…",                                           // <-- "description"
      "price": 145,
      "info": [
        { "name": "sku", "value": "4607120230971" },
        { "name": "Состав", "value": "Рис" },
        { "name": "Энергетическая ценность", "value": "Б: 6,5, Ж: 1, У: 79, Ккал: 351" }
      ],
      "store_balance": 16,
      "external_key": "2026-02-13T13:24:04",                       // <-- "modified_at"
      "image": {
        "url": "https://…/images/b01a1a32-8ba2-11e6-9cf3-10bf484d6226.jpg",
        "resize": false,
        "bgcolor": "#FFFFFF",
        "scale": 0.9
      },
      "external_data": "f9a15f0d6ebf943aea177f597cb96689c2d5c44d"  // <-- "image_hash"
    }
  ]
}
Рекомендация: поле external_key заполняйте значением modified_at из 1С (см. раздел про modified_since).

Webhook и автоматический перевод

Параметр webhook

Если поле webhook задано, то после завершения асинхронных задач (загрузка/обработка изображений и автоматический перевод) Tec.Delivery отправляет уведомление на указанный URL.

Параметр translate

Если translate = true, Tec.Delivery выполняет автоматический перевод на все языки, выбранные в профиле компании, считая исходным язык, указанный в поле language.

Смысл: интеграция отдаёт исходные тексты на одном языке (language), а Tec.Delivery сам запускает перевод и обработку изображений асинхронно.

Требования к пагинации и батчам

Инкрементальная синхронизация через modified_since

Параметр modified_since используется для получения из 1С только изменённых объектов (категорий или товаров) начиная с указанного времени.

Формат

  • Формат значения: ISO 8601
  • Пример: 2026-02-11T00:00:00
  • Рекомендуется использовать серверное время 1С

Где применяется

  • Категории верхнего уровня: type=category&parent=0
  • Вложенные категории: type=category&parent=<id>
  • Товары: type=product

Что считается изменением

Поле modified_at в ответе 1С должно обновляться при любом изменении объекта.

Для категорий:

  • изменение названия
  • изменение родителя
  • изменение статуса / видимости

Для товаров:

  • изменение цены
  • изменение остатков
  • изменение описания / состава / характеристик
  • изменение изображения
  • изменение категории
  • любое другое редактирование карточки

Алгоритм использования

Полная синхронизация (первый запуск)

  1. Выполняется запрос без ограничения по дате или с очень ранней датой, например: 1970-01-01T00:00:00.
  2. После успешной загрузки сохраняется время начала синхронизации.

Последующие синхронизации

  1. В следующий запуск передаётся modified_since=<последний сохранённый modified_at>.
  2. 1С возвращает только изменённые записи.
  3. После завершения синхронизации снова сохраняется время начала синхронизации.

Связь с external_key в Tec.Delivery

При отправке товара рекомендуется передавать в Tec.Delivery поле external_key, равное modified_at из 1С:

{
  "external_key": "2026-02-13T13:24:04"
}

Это позволяет: