Обмен 1С и Ozon: товары, остатки, заказы FBS и отчёты без ручного ввода
Содержание
Чтобы синхронизировать Ozon с 1С, нужны три вещи: ключ Seller API (пара Client-Id + Api-Key из личного кабинета продавца), инструмент обмена на стороне 1С (встроенный механизм конфигурации, готовый модуль или своя обработка) и общий идентификатор товара — артикул продавца offer_id, который совпадает с артикулом в карточке номенклатуры. Без последнего никакой модуль не свяжет товары, и обмен будет падать на каждой второй позиции.
Частое заблуждение — «подключу интеграцию, и всё синхронизируется само». На деле поток двусторонний и неравноправный. Из 1С на Ozon уходят остатки и цены, с Ozon в 1С приходят заказы, статусы отправлений и отчёты о продажах. Каждый поток настраивают отдельно, со своим расписанием и своими правилами.
Подготовка: ключи Seller API, схема работы и артикулы
Ключ доступа
Ключ создают в личном кабинете продавца Ozon, в разделе настроек, на вкладке Seller API. Там же виден Client-Id — числовой идентификатор магазина.
- Откройте настройки кабинета и вкладку Seller API.
- Сгенерируйте новый ключ и дайте ему понятное имя:
1С-обмен-основная-база. - Выберите роль. Для полного обмена нужна роль с правами на товары, цены, остатки и отправления. Для одной только выгрузки остатков хватит узкой роли.
- Скопируйте ключ сразу и сохраните в защищённом месте.
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С заказ клиента или сразу документ реализации — зависит от того, как у вас устроен учёт.
Что важно настроить:
- Контрагент. Обычно все заказы Ozon идут на одного контрагента «Ozon» с договором комиссии, а не на каждого покупателя.
- Резерв. Заказ в 1С должен резервировать товар, иначе следующая выгрузка остатков отдаст его повторно.
- Сборка. Собранное отправление переводят в статус «готово к отгрузке» — из модуля или в кабинете. При маркированных товарах на этом шаге передают коды маркировки экземпляров.
- Отмена. Отменённое отправление должно снимать резерв в 1С, а не висеть открытым заказом.
Опрашивать отправления лучше по интервалу дат изменения, а не «все за месяц». Так каждый запрос возвращает только новое, и обмен не тормозит.
Двусторонняя синхронизация: отчёты Ozon и учёт в 1С
Обратный поток — это деньги. Ozon работает с продавцами по договору комиссии, поэтому в учёте 1С продажа признаётся по отчёту комиссионера, а не в момент отгрузки на склад Ozon.
Что загружать
- 📄 Отчёт о реализации за месяц — основание для документа отчёта комиссионера: что продано, по какой цене, какое вознаграждение удержано.
- 💸 Начисления и удержания — комиссия, логистика, хранение, услуги продвижения. Их отражают как расходы на услуги комиссионера.
- ↩️ Возвраты — уменьшают продажу периода и возвращают товар в остаток.
Порядок сверки
- Загрузите отчёт за закрытый месяц, а не за текущий: Ozon может досчитывать начисления.
- Сравните выручку в 1С с суммой реализации в кабинете.
- Сверьте взаиморасчёты с Ozon: остаток долга должен совпасть с суммой к выплате за вычетом уже перечисленного.
- Расхождение ищите по возвратам и отменам — они чаще всего попадают не в тот период.
Ошибки обмена 1С с Ozon и как их найти
Хороший модуль пишет журнал обмена с текстом ответа Ozon. Если журнала нет — включите его первым делом: без текста ответа диагностика превращается в гадание.
Частые ошибки настройки
- ❌ Один ключ на тестовую и рабочую базу. Тестовая копия начинает выгружать старые остатки в живой магазин. Отключайте регламентные задания обмена в копиях базы сразу после развёртывания.
- ❌ Ручная правка остатков в кабинете Ozon при включённом обмене. Следующая выгрузка их перезапишет.
- ❌ Заказы Ozon заводятся на разных контрагентов. Отчёт комиссионера потом невозможно сопоставить с отгрузками.
Расписание обмена и производительность
Обмен в 1С запускают регламентными заданиями: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. Для каждого потока — своё задание и своя частота.
| Поток | Разумная частота | Почему |
|---|---|---|
| Новые заказы FBS | каждые 5–15 минут | на сборку у продавца ограниченное время |
| Остатки | каждые 15–30 минут и после крупного поступления | чем реже, тем выше риск продать то, чего нет |
| Цены | 1–2 раза в день или по событию | частая смена цены не нужна |
| Отчёты и начисления | раз в сутки или раз в месяц | данные Ozon досчитываются с задержкой |
Как не перегрузить базу
- ⚡ Выгружайте только изменившиеся остатки. Регистрируйте изменения и отправляйте дельту, а не весь каталог.
- 📦 Шлите пакетами. Метод остатков принимает массив позиций — сотня товаров в одном запросе лучше ста запросов.
- 🕒 Разнесите задания по времени, чтобы выгрузка цен не совпадала с загрузкой заказов.
- 🗂 Чистите журнал обмена: храните, например, 30 дней, иначе таблица разрастётся до гигабайт.
В файловом варианте регламентные задания выполняются, только пока открыт хотя бы один сеанс 1С. Закрыли программу на ночь — ночные заказы придут утром. Для FBS с ночными продажами нужна клиент-серверная база или постоянно открытый сеанс на отдельном компьютере.
Если обмен всё равно идёт медленно, смотрите, где время: в ответе Ozon (сеть, лимиты) или в 1С (запрос остатков, запись документов). Замер производительности в конфигураторе или простой лог времени до и после запроса покажет узкое место.
Частые вопросы
Можно ли подключить к одной базе 1С несколько магазинов Ozon?
Нужен ли обмен с Ozon, если работаю только по FBO?
Как быстро остаток из 1С появится на витрине Ozon?
Что будет с обменом при обновлении 1С?
Ozon поменял версию метода — что делать?
Источники
- Гражданский кодекс РФ, глава 51 «Комиссия»