Гайд 1С: Интеграция с маркетплейсами (Ozon, Wildberries) по REST API
При интенсивном обмене данными между 1С и маркетплейсами возникают проблемы:
- Ошибки
HTTP 429 Too Many Requestsиз-за превышения лимитов вызовов API (Rate Limiting). - Блокировка личного кабинета продавца из-за несвоевременной передачи остатков (OOS — Out of Stock).
- Зависание фоновых регламентных заданий 1С при синхронизации десятков тысяч карточек товаров.
- Ошибки валидации схем JSON при частых неанонсированных обновлениях API маркетплейсов.
1. Архитектура очередей и троттлинг запросов (Rate Limiter)
Для предотвращения ошибок HTTP 429 реализуйте семафор частоты запросов с использованием паузы или очереди исходящих вызовов:
// Шаблон функции отправки с контролем Rate Limit
Функция ОтправитьЗапросOzon(Метод, ПараметрыJSON, ApiKey, ClientID)
Соединение = Новый HTTPСоединение("api-seller.ozon.ru", 443, , , , 15, Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("/v3/" + Метод);
Запрос.Заголовки.Вставить("Client-Id", ClientID);
Запрос.Заголовки.Вставить("Api-Key", ApiKey);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.УстановитьТелоИзСтроки(ПараметрыJSON, КодировкаТекста.UTF8);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
// Обработка троттлинга
Если Ответ.КодСостояния = 429 Тогда
// Задержка при получении 429
Приостановить(2);
Возврат ОтправитьЗапросOzon(Метод, ПараметрыJSON, ApiKey, ClientID);
КонецЕсли;
Возврат Ответ;
КонецФункции2. Пакетная синхронизация остатков (FBS)
Не отправляйте остаток по каждому товару отдельным запросом. Формируйте пакеты до 100-500 позиций в одном JSON-теле запроса, выполняя выгрузку только по изменившимся позициям (дельта-выгрузка).
Частые вопросы (FAQ)
Как безопасно хранить API-ключи маркетплейсов в 1С?
Храните ключи в защищенных регистрах сведений с ограниченным доступом по ролям или используйте платформенное хранилище секретов (ХранилищеСертификатов / БезопасноеХранилищеДанных).
Что такое дельта-выгрузка остатков и как ее реализовать?
Дельта-выгрузка передает только те товары, чей свободный остаток изменился с момента прошлого сеанса обмена. Реализуется через подписку на события при проведении складских документов или план обмена.
Как обрабатывать большие каталоги товаров без таймаутов?
Используйте встроенную в API маркетплейсов пагинацию по курсору (last_id / cursor) и разбивайте обработку на параллельные фоновые задания по разным категориям номенклатуры.
Почему Wildberries API возвращает ошибку 401 Unauthorized при корректном ключе?
Убедитесь, что токен не истек и имеет требуемую область действия (Scope) — например, права на раздел 'Цены и скидки' или 'Маркетплейс (сборочные задания)'.