Обмен 1С и Ozon: товары, остатки, заказы FBS и отчёты без ручного ввода

· 10 мин

Содержание

Чтобы синхронизировать Ozon с 1С, нужны три вещи: ключ Seller API (пара Client-Id + Api-Key из личного кабинета продавца), инструмент обмена на стороне 1С (встроенный механизм конфигурации, готовый модуль или своя обработка) и общий идентификатор товара — артикул продавца offer_id, который совпадает с артикулом в карточке номенклатуры. Без последнего никакой модуль не свяжет товары, и обмен будет падать на каждой второй позиции.

Частое заблуждение — «подключу интеграцию, и всё синхронизируется само». На деле поток двусторонний и неравноправный. Из 1С на Ozon уходят остатки и цены, с Ozon в 1С приходят заказы, статусы отправлений и отчёты о продажах. Каждый поток настраивают отдельно, со своим расписанием и своими правилами.

Подготовка: ключи Seller API, схема работы и артикулы

Ключ доступа

Ключ создают в личном кабинете продавца Ozon, в разделе настроек, на вкладке Seller API. Там же виден Client-Id — числовой идентификатор магазина.

  1. Откройте настройки кабинета и вкладку Seller API.
  2. Сгенерируйте новый ключ и дайте ему понятное имя: 1С-обмен-основная-база.
  3. Выберите роль. Для полного обмена нужна роль с правами на товары, цены, остатки и отправления. Для одной только выгрузки остатков хватит узкой роли.
  4. Скопируйте ключ сразу и сохраните в защищённом месте.

Api-Key даёт доступ к магазину без пароля. Не пересылайте его в мессенджерах и не храните в тексте обработки. В 1С ключ кладут в настройки модуля или в безопасное хранилище, а доступ к нему ограничивают ролями.

💡 Заведите отдельный ключ под каждую базу 1С и под каждого подрядчика. Отозвать один ключ проще, чем менять общий во всех системах.

Схема работы с Ozon

От схемы зависит, что вообще нужно синхронизировать:

СхемаГде хранится товарЧто отдаёт 1СЧто получает 1С
FBOна складе Ozonцены, карточкиотчёты о продажах, возвраты
FBSна вашем складецены, остатки по складамзаказы (отправления), статусы, отчёты
realFBSна вашем складе, доставка вашацены, остаткизаказы, статусы, отчёты

При FBO остатки из 1С выгружать бессмысленно: Ozon считает их сам по своим складам. Зато нужно загружать в 1С отчёты, иначе учёт товаров, переданных на комиссию, разойдётся с реальностью.

Сопоставление артикулов

Связка товара 1С и карточки Ozon держится на offer_id. Возможны два варианта:

  • 🔑 артикул в 1С совпадает с offer_id — модуль сопоставит товары автоматически;
  • 🔗 артикулы разные — понадобится таблица соответствий (обычно это регистр сведений модуля или реквизит номенклатуры).

Перед подключением выгрузите список товаров из кабинета Ozon в Excel и сверьте с номенклатурой.

Чем связать 1С и Ozon: модули, обработки или API

Выбор зависит от конфигурации, объёма заказов и бюджета.

СпособКогда подходитРиски
Встроенный механизм типовой конфигурацииУНФ, УТ, КА с поддержкой маркетплейсов в вашем релизенабор функций ограничен, часть процессов вручную
Загрузка отчётов в 1С:БухгалтериюFBO, бухгалтеру нужен учёт комиссиизаказы и остатки не синхронизируются
Готовый модуль партнёра (расширение .cfe)FBS, сотни заказов в день, нужен полный циклподписка, зависимость от разработчика при смене API
Сервис-посредник (облачная платформа)несколько маркетплейсов сразуданные идут через третью сторону
Своя обработка через HTTPСоединениенестандартный учёт, свой программистподдержка версий API ложится на вас

Встроенные возможности

В свежих релизах ряда типовых решений появились механизмы работы с маркетплейсами. Разница между конфигурациями существенная: в одних это полный обмен заказами и остатками, в других — только загрузка отчётов о продажах. Прежде чем покупать модуль, откройте описание изменений вашего релиза и поищите в нём слова «маркетплейс» и «Ozon».

В 1С:Бухгалтерии 3.0 учёт продаж через Ozon ведут как продажу через комиссионера: отгрузку на Ozon — документом передачи товаров на комиссию, продажи — документом Отчет комиссионера (агента) о продажах из раздела Продажи.

Готовый модуль

Модули ставят расширением конфигурации, поэтому типовая часть остаётся на поддержке и обновляется как обычно. При выборе спросите разработчика:

  • ✅ какие схемы поддерживаются (FBO, FBS, realFBS);
  • ✅ как быстро модуль переходит на новые версии методов Ozon;
  • ✅ работает ли он с маркировкой и несколькими складами;
  • ✅ есть ли журнал обмена с текстом ответа Ozon.

Своя интеграция через API

Seller API — это REST-сервис на api-seller.ozon.ru. Каждый запрос — HTTPS POST с JSON-телом и двумя заголовками: Client-Id и Api-Key. В 1С такой запрос делают объектами HTTPСоединение и HTTPЗапрос, ответ разбирают через ЧтениеJSON.

Выгрузка номенклатуры, цен и остатков на Ozon

Карточки товаров

Карточки Ozon проще завести в кабинете или через шаблон Excel: у каждой категории свои обязательные характеристики, и подставить их из типовой номенклатуры 1С почти никогда не получается. Из 1С разумно выгружать то, что меняется часто: цены и остатки.

Какой остаток отдавать

Отдавать на Ozon весь остаток склада — прямой путь к отменам заказов. Считайте свободный остаток:

Свободный остаток = На складе − В резерве под другие заказы − Страховой запас

Пример: на складе 40 штук, 12 зарезервировано под оптового клиента, страховой запас 3. На Ozon уходит 40 − 12 − 3 = 25.

Если у вас несколько складов в кабинете Ozon (схема FBS), остаток передают по каждому складу отдельно, с его warehouse_id. Склад Ozon сопоставляют со складом 1С в настройках модуля.

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

Ниже — выгрузка остатков одного товара через метод /v2/products/stocks. Ozon периодически выпускает новые версии методов и отключает старые, поэтому перед запуском сверьте адрес с актуальной документацией Seller API.

Функция ОтправитьОстатокНаOzon(ClientId, ApiKey, Артикул, ИдСклада, Количество)

    Соединение = Новый HTTPСоединение("api-seller.ozon.ru", 443, , , , 60,
        Новый ЗащищенноеСоединениеOpenSSL);

    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Client-Id", ClientId);
    Заголовки.Вставить("Api-Key", ApiKey);
    Заголовки.Вставить("Content-Type", "application/json");

    Позиция = Новый Структура;
    Позиция.Вставить("offer_id", Артикул);
    Позиция.Вставить("warehouse_id", ИдСклада);
    Позиция.Вставить("stock", Количество);

    Остатки = Новый Массив;
    Остатки.Добавить(Позиция);

    Тело = Новый Структура("stocks", Остатки);

    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, Тело);
    ТекстЗапроса = ЗаписьJSON.Закрыть();

    Запрос = Новый HTTPЗапрос("/v2/products/stocks", Заголовки);
    Запрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8);

    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    ТекстОтвета = Ответ.ПолучитьТелоКакСтроку("UTF-8");

    Если Ответ.КодСостояния <> 200 Тогда
        ВызватьИсключение СтрШаблон("Ozon вернул код %1: %2",
            Формат(Ответ.КодСостояния, "ЧГ=0"), ТекстОтвета);
    КонецЕсли;

    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(ТекстОтвета);
    Результат = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();

    Возврат Результат;

КонецФункции

Код 200 ещё не значит, что остаток принят. Ozon возвращает результат по каждой позиции отдельно: признак обновления и массив ошибок. Разбирайте его и пишите в журнал позиции, которые не обновились.

💡 ClientId и ApiKey передавайте в функцию из настроек, а не прописывайте в коде. Тогда смена ключа не потребует правки обработки.

Цены

Цены выгружают отдельным методом. Учтите, что Ozon хранит у товара несколько цен: текущую, цену до скидки и минимальную для акций. Если в 1С есть только одна розничная цена, договоритесь, какая из цен Ozon ей соответствует, и не затирайте остальные нулями.

Заказы и статусы отправлений FBS в 1С

При FBS каждая покупка приходит как отправление (posting) со своим номером. Модуль забирает новые отправления по расписанию и создаёт в 1С заказ клиента или сразу документ реализации — зависит от того, как у вас устроен учёт.

Что важно настроить:

  1. Контрагент. Обычно все заказы Ozon идут на одного контрагента «Ozon» с договором комиссии, а не на каждого покупателя.
  2. Резерв. Заказ в 1С должен резервировать товар, иначе следующая выгрузка остатков отдаст его повторно.
  3. Сборка. Собранное отправление переводят в статус «готово к отгрузке» — из модуля или в кабинете. При маркированных товарах на этом шаге передают коды маркировки экземпляров.
  4. Отмена. Отменённое отправление должно снимать резерв в 1С, а не висеть открытым заказом.
Статусы отправления FBS в Seller API

Опрашивать отправления лучше по интервалу дат изменения, а не «все за месяц». Так каждый запрос возвращает только новое, и обмен не тормозит.

Двусторонняя синхронизация: отчёты Ozon и учёт в 1С

Обратный поток — это деньги. Ozon работает с продавцами по договору комиссии, поэтому в учёте 1С продажа признаётся по отчёту комиссионера, а не в момент отгрузки на склад Ozon.

Что загружать

  • 📄 Отчёт о реализации за месяц — основание для документа отчёта комиссионера: что продано, по какой цене, какое вознаграждение удержано.
  • 💸 Начисления и удержания — комиссия, логистика, хранение, услуги продвижения. Их отражают как расходы на услуги комиссионера.
  • ↩️ Возвраты — уменьшают продажу периода и возвращают товар в остаток.

Порядок сверки

  1. Загрузите отчёт за закрытый месяц, а не за текущий: Ozon может досчитывать начисления.
  2. Сравните выручку в 1С с суммой реализации в кабинете.
  3. Сверьте взаиморасчёты с Ozon: остаток долга должен совпасть с суммой к выплате за вычетом уже перечисленного.
  4. Расхождение ищите по возвратам и отменам — они чаще всего попадают не в тот период.
Сверка месяца с Ozon
Выполнено: 0 / 5

Ошибки обмена 1С с Ozon и как их найти

Хороший модуль пишет журнал обмена с текстом ответа Ozon. Если журнала нет — включите его первым делом: без текста ответа диагностика превращается в гадание.

Диагностика: выберите симптом

Частые ошибки настройки

  • ❌ Один ключ на тестовую и рабочую базу. Тестовая копия начинает выгружать старые остатки в живой магазин. Отключайте регламентные задания обмена в копиях базы сразу после развёртывания.
  • ❌ Ручная правка остатков в кабинете Ozon при включённом обмене. Следующая выгрузка их перезапишет.
  • ❌ Заказы Ozon заводятся на разных контрагентов. Отчёт комиссионера потом невозможно сопоставить с отгрузками.

Расписание обмена и производительность

Обмен в 1С запускают регламентными заданиями: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. Для каждого потока — своё задание и своя частота.

ПотокРазумная частотаПочему
Новые заказы FBSкаждые 5–15 минутна сборку у продавца ограниченное время
Остаткикаждые 15–30 минут и после крупного поступлениячем реже, тем выше риск продать то, чего нет
Цены1–2 раза в день или по событиючастая смена цены не нужна
Отчёты и начисленияраз в сутки или раз в месяцданные Ozon досчитываются с задержкой

Как не перегрузить базу

  • ⚡ Выгружайте только изменившиеся остатки. Регистрируйте изменения и отправляйте дельту, а не весь каталог.
  • 📦 Шлите пакетами. Метод остатков принимает массив позиций — сотня товаров в одном запросе лучше ста запросов.
  • 🕒 Разнесите задания по времени, чтобы выгрузка цен не совпадала с загрузкой заказов.
  • 🗂 Чистите журнал обмена: храните, например, 30 дней, иначе таблица разрастётся до гигабайт.

В файловом варианте регламентные задания выполняются, только пока открыт хотя бы один сеанс 1С. Закрыли программу на ночь — ночные заказы придут утром. Для FBS с ночными продажами нужна клиент-серверная база или постоянно открытый сеанс на отдельном компьютере.

Если обмен всё равно идёт медленно, смотрите, где время: в ответе Ozon (сеть, лимиты) или в 1С (запрос остатков, запись документов). Замер производительности в конфигураторе или простой лог времени до и после запроса покажет узкое место.

Частые вопросы

Можно ли подключить к одной базе 1С несколько магазинов Ozon?
Да. У каждого магазина свой Client-Id и свой ключ. В модуле заводят отдельные настройки подключения, и каждый магазин получает свой склад-источник остатков.
Нужен ли обмен с Ozon, если работаю только по FBO?
Остатки и заказы синхронизировать не нужно. Достаточно загружать в 1С отчёты о реализации и начисления, чтобы учесть продажи и комиссию.
Как быстро остаток из 1С появится на витрине Ozon?
Не мгновенно: после успешного ответа API маркетплейсу нужно время на обработку. Поэтому заказы на последние штуки возможны, и страховой запас в формуле свободного остатка нужен именно для этого.
Что будет с обменом при обновлении 1С?
Модуль-расширение сохраняется. После обновления проверьте, что расширение подключено и без ошибок применяется, и запустите обмен вручную один раз.
Ozon поменял версию метода — что делать?
Если стоит модуль, установите его обновление от разработчика. Если обработка своя — замените адрес метода и проверьте формат ответа: в новой версии могут измениться поля.

Источники

  • Гражданский кодекс РФ, глава 51 «Комиссия»