Интеграция 1С:ERP с Ozon через API за 5 шагов в 2026

Интеграция 1С:ERP с Ozon через API за 5 шагов в 2026

📅 Опубликовано 17 июня 2026 г. · 🔄 Обновлено 25 июля 2026 г.

Коротко: интеграция 1С:ERP с Ozon строится на Seller API v3 и состоит из 5 шагов: получение Client-Id и Api-Key в личном кабинете продавца, регистрация HTTP-сервисов в 1С, настройка регламентных заданий для обмена, реализация загрузки заказов (метод /v3/posting/fbs/list) и выгрузки остатков и цен. Базовая настройка занимает 3-5 рабочих дней, обмен заказами выполняется каждые 5-15 минут.

Что такое Ozon Seller API и зачем интегрировать его с 1С:ERP?

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

Интеграция с задачи по 1С:ERP решает три ключевые задачи:

  • Загрузка заказов — новые отправления FBS/FBO автоматически попадают в 1С как документы реализации или заказы клиента;
  • Обновление остатков — данные о свободных остатках со складов передаются на Ozon, исключая продажу отсутствующего товара;
  • Синхронизация цен — актуальные цены из 1С выгружаются на площадку с учётом наценок и акций.

В отличие от типовых решений вроде «1С:Управление торговлей. Модуль для маркетплейсов», прямая интеграция через API даёт полный контроль над логикой обмена и не требует промежуточных сервисов.

Важно: Ozon регулярно обновляет версии API. На момент 2026 года актуальны методы v3 и v4. Перед внедрением сверяйтесь с официальной документацией docs.ozon.ru/api/seller.

Шаг 1. Как получить доступ к API Ozon: Client-Id и Api-Key?

Любая интеграция начинается с получения учётных данных. Для работы с Seller API нужны два параметра — Client-Id (идентификатор продавца) и Api-Key (секретный ключ).

Где взять ключи в личном кабинете?

  1. Войдите в личный кабинет продавца Ozon Seller;
  2. Перейдите в раздел «Настройки» → «Seller API»;
  3. Нажмите «Сгенерировать ключ» и выберите тип доступа (для интеграции с 1С обычно достаточно прав «Admin read only» либо полного доступа при необходимости подтверждать отправления);
  4. Скопируйте Client-Id и сгенерированный Api-Key — последний показывается только один раз.

Эти данные нужно сохранить в 1С в защищённом виде. Рекомендуется создать справочник «НастройкиМаркетплейсов» или использовать константы с хранением в безопасном хранилище.

// Сохранение ключей доступа в безопасное хранилище
Процедура СохранитьКлючиOzon(ClientId, ApiKey) Экспорт
	
	ДанныеДоступа = Новый Структура;
	ДанныеДоступа.Вставить("ClientId", ClientId);
	ДанныеДоступа.Вставить("ApiKey", ApiKey);
	
	// Запись в безопасное хранилище общих данных
	УстановитьБезопасноеХранилищеДанных("ИнтеграцияOzon", "Доступ", ДанныеДоступа);
	
КонецПроцедуры

// Чтение ключей доступа
Функция ПолучитьКлючиOzon() Экспорт
	
	Возврат ПолучитьИзБезопасногоХранилища("ИнтеграцияOzon", "Доступ");
	
КонецФункции

Шаг 2. Как настроить HTTP-соединение с Ozon в 1С:ERP?

Все запросы к Ozon API выполняются по протоколу HTTPS на адрес api-seller.ozon.ru. В заголовках каждого запроса передаются Client-Id и Api-Key, а тело запроса формируется в формате JSON.

Базовая функция отправки запроса

Создадим универсальную функцию, которая будет использоваться для всех методов API. Она инкапсулирует логику установки соединения, заголовков и обработки ответа.

// Универсальная функция выполнения POST-запроса к Ozon API
Функция ВыполнитьЗапросOzon(МетодAPI, ПараметрыЗапроса) Экспорт
	
	КлючиДоступа = ПолучитьКлючиOzon();
	
	Если КлючиДоступа = Неопределено Тогда
		ВызватьИсключение "Не настроены ключи доступа к Ozon API";
	КонецЕсли;
	
	// Настройка защищённого соединения
	ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
	HTTPСоединение = Новый HTTPСоединение(
		"api-seller.ozon.ru",
		443,
		,
		,
		,
		30,
		ЗащищенноеСоединение);
	
	// Формирование тела запроса в JSON
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON, ПараметрыЗапроса);
	ТелоЗапроса = ЗаписьJSON.Закрыть();
	
	// Заголовки авторизации
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Client-Id", КлючиДоступа.ClientId);
	Заголовки.Вставить("Api-Key", КлючиДоступа.ApiKey);
	Заголовки.Вставить("Content-Type", "application/json");
	
	HTTPЗапрос = Новый HTTPЗапрос(МетодAPI, Заголовки);
	HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8);
	
	// Выполнение запроса
	Попытка
		HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
	Исключение
		ЗаписьЖурналаРегистрации("ИнтеграцияOzon.Ошибка",
			УровеньЖурналаРегистрации.Ошибка,,,
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
		Возврат Неопределено;
	КонецПопытки;
	
	// Разбор ответа
	Результат = Новый Структура;
	Результат.Вставить("КодСостояния", HTTPОтвет.КодСостояния);
	Результат.Вставить("Тело", HTTPОтвет.ПолучитьТелоКакСтроку());
	
	Возврат Результат;
	
КонецФункции

Обратите внимание на использование ЗащищенноеСоединениеOpenSSL() — без него запросы по HTTPS работать не будут. Таймаут в 30 секунд подобран эмпирически: при больших объёмах данных его можно увеличить.

Шаг 3. Как загружать заказы из Ozon в 1С:ERP?

Заказы (в терминологии Ozon — «отправления», postings) загружаются методом /v3/posting/fbs/list для схемы FBS (продажа со склада продавца) и /v2/posting/fbo/list для FBO (продажа со склада Ozon).

Какой формат запроса заказов использовать?

Запрос принимает фильтр по дате и статусу. Для регулярного обмена удобно запрашивать заказы за последние сутки со статусом «awaiting_packaging» (ожидают сборки) и «awaiting_deliver» (ожидают отгрузки).

// Загрузка новых отправлений FBS из Ozon
Функция ПолучитьЗаказыOzon(ДатаНачала, ДатаОкончания) Экспорт
	
	Фильтр = Новый Структура;
	Фильтр.Вставить("since", Формат(ДатаНачала, "ДФ=yyyy-MM-ddTHH:mm:ss.000Z"));
	Фильтр.Вставить("to", Формат(ДатаОкончания, "ДФ=yyyy-MM-ddTHH:mm:ss.000Z"));
	Фильтр.Вставить("status", "awaiting_packaging");
	
	ПараметрыЗапроса = Новый Структура;
	ПараметрыЗапроса.Вставить("dir", "ASC");
	ПараметрыЗапроса.Вставить("filter", Фильтр);
	ПараметрыЗапроса.Вставить("limit", 1000);
	ПараметрыЗапроса.Вставить("offset", 0);
	
	Ответ = ВыполнитьЗапросOzon("/v3/posting/fbs/list", ПараметрыЗапроса);
	
	Если Ответ = Неопределено ИЛИ Ответ.КодСостояния <> 200 Тогда
		Возврат Новый Массив;
	КонецЕсли;
	
	// Разбор JSON-ответа
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(Ответ.Тело);
	ДанныеОтвета = ПрочитатьJSON(ЧтениеJSON);
	ЧтениеJSON.Закрыть();
	
	Возврат ДанныеОтвета.result.postings;
	
КонецФункции

Как создать документ реализации на основе заказа?

Каждое отправление содержит номер (posting_number), список товаров с артикулами (offer_id) и количеством. На основе этих данных формируем документ «ЗаказКлиента» или «РеализацияТоваровУслуг».

// Создание заказа клиента из данных отправления Ozon
Процедура СоздатьЗаказИзОтправления(ДанныеОтправления) Экспорт
	
	НомерОтправления = ДанныеОтправления.posting_number;
	
	// Проверка на дубль — не создаём заказ повторно
	Если ЗаказСОтправлениемСуществует(НомерОтправления) Тогда
		Возврат;
	КонецЕсли;
	
	ЗаказКлиента = Документы.ЗаказКлиента.СоздатьДокумент();
	ЗаказКлиента.Дата = ТекущаяДатаСеанса();
	ЗаказКлиента.Партнер = ПолучитьПартнераOzon();
	ЗаказКлиента.Контрагент = ПолучитьКонтрагентаOzon();
	ЗаказКлиента.НомерОтправленияМаркетплейс = НомерОтправления;
	ЗаказКлиента.Организация = ПолучитьОрганизациюПоУмолчанию();
	
	// Заполнение товаров
	Для Каждого ТоварОтправления Из ДанныеОтправления.products Цикл
		
		Номенклатура = НайтиНоменклатуруПоАртикулу(ТоварОтправления.offer_id);
		
		Если Номенклатура = Неопределено Тогда
			ЗаписьЖурналаРегистрации("ИнтеграцияOzon",
				УровеньЖурналаРегистрации.Предупреждение,,,
				"Не найдена номенклатура с артикулом: " + ТоварОтправления.offer_id);
			Продолжить;
		КонецЕсли;
		
		НоваяСтрока = ЗаказКлиента.Товары.Добавить();
		НоваяСтрока.Номенклатура = Номенклатура;
		НоваяСтрока.Количество = ТоварОтправления.quantity;
		НоваяСтрока.Цена = Число(ТоварОтправления.price);
		
	КонецЦикла;
	
	Попытка
		ЗаказКлиента.Записать(РежимЗаписиДокумента.Проведение);
	Исключение
		ЗаписьЖурналаРегистрации("ИнтеграцияOzon.Ошибка",
			УровеньЖурналаРегистрации.Ошибка,,,
			"Ошибка проведения заказа " + НомерОтправления + ": "
			+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
	КонецПопытки;
	
КонецПроцедуры

Связка артикула Ozon (offer_id) с номенклатурой 1С — критичный момент. Рекомендуется хранить артикул маркетплейса в отдельном реквизите справочника «Номенклатура» или в регистре сведений «АртикулыНоменклатурыМаркетплейсов».

Шаг 4. Как выгружать остатки товаров на Ozon?

Передача остатков выполняется методом /v2/products/stocks. Ozon ограничивает количество товаров в одном запросе — до 100 позиций, поэтому при большом ассортименте данные отправляются пакетами.

Откуда брать данные об остатках в ERP?

В 1С:ERP свободные остатки получают из регистра накопления «ТоварыНаСкладах» с учётом резервов. Для маркетплейса важно передавать именно доступное к продаже количество.

// Получение свободных остатков для выгрузки на Ozon
Функция ПолучитьОстаткиДляOzon(Склад) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	АртикулыМаркетплейсов.АртикулOzon КАК АртикулOzon,
		|	ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК Остаток
		|ИЗ
		|	РегистрСведений.АртикулыНоменклатурыМаркетплейсов КАК АртикулыМаркетплейсов
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
		|			,
		|			Склад = &Склад) КАК ТоварыНаСкладахОстатки
		|		ПО АртикулыМаркетплейсов.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
		|ГДЕ
		|	АртикулыМаркетплейсов.АртикулOzon <> """"";
	
	Запрос.УстановитьПараметр("Склад", Склад);
	
	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	МассивОстатков = Новый Массив;
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		ЭлементОстатка = Новый Структура;
		ЭлементОстатка.Вставить("offer_id", ВыборкаДетальныеЗаписи.АртикулOzon);
		ЭлементОстатка.Вставить("stock", ВыборкаДетальныеЗаписи.Остаток);
		ЭлементОстатка.Вставить("warehouse_id", ПолучитьИдСкладаOzon(Склад));
		
		МассивОстатков.Добавить(ЭлементОстатка);
		
	КонецЦикла;
	
	Возврат МассивОстатков;
	
КонецФункции

// Отправка остатков пакетами по 100 позиций
Процедура ВыгрузитьОстаткиOzon(Склад) Экспорт
	
	ВсеОстатки = ПолучитьОстаткиДляOzon(Склад);
	РазмерПакета = 100;
	
	Для НомерПакета = 0 По Цел(ВсеОстатки.Количество() / РазмерПакета) Цикл
		
		ТекущийПакет = Новый Массив;
		
		Для Индекс = (НомерПакета * РазмерПакета) По вычислить минимум через условие, т.к. встроенной функции Мин() в 1С нет Цикл
			ТекущийПакет.Добавить(ВсеОстатки[Индекс]);
		КонецЦикла;
		
		Если ТекущийПакет.Количество() = 0 Тогда
			Прервать;
		КонецЕсли;
		
		ПараметрыЗапроса = Новый Структура;
		ПараметрыЗапроса.Вставить("stocks", ТекущийПакет);
		
		ВыполнитьЗапросOzon("/v2/products/stocks", ПараметрыЗапроса);
		
	КонецЦикла;
	
КонецПроцедуры

Как выбрать между прямой интеграцией через API и готовым модулем?

Прямая работа с Seller API — не единственный путь. На рынке 2026 года существует несколько готовых решений, и выбор зависит от конфигурации и требований к гибкости.

Типовые и сторонние модули

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

  • 1С:УТ интеграция с маркетплейсами — встроенный функционал «1С:Управление торговлей», начиная с УТ 11.5, поддерживает обмен заказами, остатками и ценами с Ozon и Wildberries без внешних обработок. Для более старых редакций доступны отдельные расширения;
  • Модуль интеграции 1С с маркетплейсами от партнёров — тиражные решения, которые ставятся как расширение и настраиваются через мастер. Из известных — «Виктория: интеграция с маркетплейсами для 1С», ориентированная на несколько площадок одновременно;
  • 1С:УНФ интеграция с маркетплейсами — для малого бизнеса на «Управлении нашей фирмой» есть встроенная синхронизация, покрывающая типовые FBS/FBO-сценарии;
  • 1С:Бухгалтерия интеграция с маркетплейсами — здесь речь идёт скорее о загрузке отчётов о продажах и комиссий для корректного учёта, а не об оперативном обмене заказами;
  • 1С:КА интеграция с маркетплейсами — «Комплексная автоматизация» использует тот же механизм, что и УТ, так как построена на общей платформе.

Для 1С:ERP, где логика учёта сложнее (несколько организаций, ордерные склады, партионный учёт), прямая интеграция через API чаще оказывается предпочтительнее: она позволяет точно управлять тем, какие остатки и цены попадают на площадку. Если вам нужна готовая реализация под ключ, посмотрите варианты по услуге интеграция с маркетплейсами 1с — там собраны специалисты по разным конфигурациям.

Как подключить к 1С:ERP не только Ozon, но и Wildberries?

Продавцы редко работают только на одной площадке, поэтому связка «интеграция 1С с маркетплейсами Ozon Wildberries» — типичный запрос при масштабировании. Архитектурно это решается так же, как и с Ozon, но со своими нюансами.

Отличия API Wildberries

Интеграция 1С с маркетплейсами Wildberries строится на других принципах авторизации и наборе методов:

  • Авторизация выполняется через один токен, который передаётся в заголовке Authorization, — отдельного Client-Id, как у Ozon, нет;
  • Для разных операций (контент, цены, статистика, поставки) Wildberries использует раздельные базовые URL и токены с разными областями доступа;
  • Остатки и заказы для схемы FBS запрашиваются через свои методы, а сопоставление товаров идёт по баркоду или артикулу продавца.

Единая архитектура обмена в 1С:ERP

Чтобы не плодить дублирующий код, обмен с несколькими площадками удобно строить на общей схеме:

  • Справочник «Маркетплейсы» — хранит тип площадки (Ozon, Wildberries) и настройки подключения;
  • Регистр сведений с артикулами — с отдельными колонками под идентификаторы каждой площадки (offer_id для Ozon, баркод для Wildberries);
  • Универсальные регламентные задания — одна процедура обмена перебирает активные площадки и вызывает нужный обработчик по типу.

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

Найдите специалиста для решения этой задачи на koderion.ru

Читайте также: внедрение и поддержка 1С:ERP

Читайте также