База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как создать отчет по ежедневным продажам на OZON, РВБ и Яндекс.Маркете через API
- В этой теме 1 ответ, 2 участника, последнее обновление 2 часа, 56 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
19 апреля 2026 в 12:45 #36665
напиши отчет получения ежедневных продаж на ОЗОН, РВБ и Яндекс-маркете по api
-
19 апреля 2026 в 12:45 #36666
Для получения ежедневных продаж с маркетплейсов ОЗОН, Wildberries (РВБ) и Яндекс.Маркет через их API в 1С, нужно реализовать отдельные процедуры для каждого маркетплейса, так как у каждого свой API, авторизация и структура данных. Ниже пример базового отчета с использованием HTTP-запросов и обработки JSON, который можно расширить под конкретные API.
—
### Общие рекомендации
— Для каждого маркетплейса нужно получить API ключи и токены.
— Запросы делать с учетом ограничений API (периоды, лимиты).
— Обрабатывать пагинацию, если есть.
— Сохранять данные в регистр сведений или временную таблицу для отчета.
— Использовать HTTPСоединение и HTTPЗапрос для вызова API.
— Парсить JSON через ЧтениеJSON.—
### Пример структуры отчета (упрощенный)
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166&НаКлиентеПерем HTTPКодУспеха = 200;Перем ТаймаутЗапроса = 200;Процедура СформироватьОтчет(ДатаНачала, ДатаОкончания) Экспорт// Получаем данные с каждого маркетплейсаПродажиОзон = ПолучитьПродажиОзон(ДатаНачала, ДатаОкончания);// Обработка и вывод данных (например, заполнение табличного документа)ТабДок = Новый ТабличныйДокумент;ТабДок.Колонки.Добавить("Дата");ТабДок.Колонки.Добавить("Маркетплейс");ТабДок.Колонки.Добавить("Артикул");ТабДок.Колонки.Добавить("Количество");ТабДок.Колонки.Добавить("Сумма");// Заполняем из ОЗОНДля Каждого Строка Из ПродажиОзон ЦиклНоваяСтрока = ТабДок.ДобавитьСтроку();НоваяСтрока["Дата"] = Строка.Дата;НоваяСтрока["Маркетплейс"] = "OZON";НоваяСтрока["Артикул"] = Строка.Артикул;НоваяСтрока["Количество"] = Строка.Количество;НоваяСтрока["Сумма"] = Строка.Сумма;КонецЦикла;// Вывод отчетаФорма = ПолучитьОбщуюФорму("ФормаТабличногоДокумента");Форма.ТабличныйДокумент = ТабДок;Форма.Открыть();КонецПроцедуры// --- Функции получения данных ---// Получение продаж с OZONФункция ПолучитьПродажиОзон(ДатаНачала, ДатаОкончания) ЭкспортРезультат = Новый Массив;// Настройки APIApiKey = "<Ваш API ключ OZON>";URL = "https://api-seller.ozon.ru/v2/posting/fbo/list"; // пример методаЗаголовки = Новый Соответствие;Заголовки.Вставить("Client-Id", ApiKey);Заголовки.Вставить("Api-Key", ApiKey);// Формируем тело запроса с фильтром по датеТелоЗапроса = Новый Структура;ТелоЗапроса.Вставить("dir", "asc");ТелоЗапроса.Вставить("filter", Новый Структура("since, to", ДатаНачала, ДатаОкончания));ТелоЗапроса.Вставить("limit", 100);ТелоЗапроса.Вставить("offset", 0);// Реализация пагинации и вызова POST запроса с таймаутомПовторОтвет = ВыполнитьHttpPost(URL, ТелоЗапроса, Заголовки);Если Ответ.КодСостояния <> HTTPКодУспеха ТогдаВызватьИсключение "Ошибка получения данных OZON: " + Ответ.ПолучитьТелоКакСтроку();КонецЕсли;ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();ЧтениеJSON = Новый ЧтениеJSON;ЧтениеJSON.УстановитьСтроку(ТекстОтвета);Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);ЧтениеJSON.Закрыть();Для Каждого Элемент Из Данные.postings ЦиклНоваяСтрока = Новый Структура;НоваяСтрока.Вставить("Дата", Элемент.shipmentDate);НоваяСтрока.Вставить("Артикул", Элемент.offerId);НоваяСтрока.Вставить("Количество", Элемент.quantity);НоваяСтрока.Вставить("Сумма", Элемент.price);Результат.Добавить(НоваяСтрока);КонецЦикла;ТелоЗапроса.offset = ТелоЗапроса.offset + ТелоЗапроса.limit;Всего = Данные.paging.total;Пока ТелоЗапроса.offset < Всего;Возврат Результат;КонецФункции// Получение продаж с Wildberries (РВБ)Функция ПолучитьПродажиРВБ(ДатаНачала, ДатаОкончания) ЭкспортРезультат = Новый Массив;КлючАПИ = "<Ваш ключ Wildberries>";Хост = "statistics-api.wildberries.ru";ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;СоединениеHttp = Новый HTTPСоединение(Хост, , , , , ТаймаутЗапроса, ЗащищенноеСоединение);Заголовки = Новый Соответствие;Заголовки.Вставить("Authorization", КлючАПИ);Заголовки.Вставить("Content-Type", "application/json");АдресРесурса = "api/v5/supplier/reportDetailByPeriod?dateFrom=" + Формат(ДатаНачала, "ДФ=гггг-ММ-ддT00:00:00") + "&dateTo=" + Формат(ДатаОкончания, "ДФ=гггг-ММ-ддT23:59:59") + "&limit=100000";ЗапросHttp = Новый HTTPЗапрос(АдресРесурса, Заголовки);ОтветHttp = СоединениеHttp.Получить(ЗапросHttp);Если ОтветHttp.КодСостояния = HTTPКодУспеха ТогдаЧтениеJSON = Новый ЧтениеJSON;ЧтениеJSON.УстановитьСтроку(ОтветHttp.ПолучитьТелоКакСтроку());МассивТранзакций = ПрочитатьJSON(ЧтениеJSON, Ложь);ЧтениеJSON.Закрыть();Для Каждого Транзакция Из МассивТранзакций ЦиклНоваяСтрока = Новый Структура;НоваяСтрока.Вставить("Дата", Транзакция.date);НоваяСтрока.Вставить("Артикул", Транзакция.supplier_article);НоваяСтрока.Вставить("Количество", Транзакция.quantity);НоваяСтрока.Вставить("Сумма", Транзакция.totalPrice);Результат.Добавить(НоваяСтрока);КонецЦикла;ИначеВызватьИсключение "Ошибка получения данных Wildberries: " + ОтветHttp.ПолучитьТелоКакСтроку();КонецЕсли;Возврат Результат;КонецФункции// Получение продаж с Яндекс.МаркетФункция ПолучитьПродажиЯндекс(ДатаНачала, ДатаОкончания) ЭкспортРезультат = Новый Массив;ApiToken = "<Ваш токен Яндекс.Маркет>";URL = "https://api.partner.market.yandex.ru/v2/campaigns/{campaignId}/orders.json";Заголовки = Новый Соответствие;Заголовки.Вставить("Authorization", "OAuth " + ApiToken);Параметры = Новый Соответствие;Параметры.Вставить("fromDate", Формат(ДатаНачала, "ДФ=гггг-ММ-ддT00:00:00+00:00"));Параметры.Вставить("toDate", Формат(ДатаОкончания, "ДФ=гггг-ММ-ддT23:59:59+00:00"));Адрес = URL + "?fromDate=" + Параметры.fromDate + "&toDate=" + Параметры.toDate;Соединение = Новый HTTPСоединение("api.partner.market.yandex.ru", , , , , ТаймаутЗапроса);Запрос = Новый HTTPЗапрос(Адрес, Заголовки);Ответ = Соединение.Получить(Запрос);Если Ответ.КодСостояния = HTTPКодУспеха ТогдаЧтениеJSON = Новый ЧтениеJSON;ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);ЧтениеJSON.Закрыть();Для Каждого Заказ Из Данные.orders ЦиклНоваяСтрока = Новый Структура;НоваяСтрока.Вставить("Дата", Заказ.creationDate);НоваяСтрока.Вставить("Артикул", Заказ.items[0].offerId);НоваяСтрока.Вставить("Количество", Заказ.items[0].count);НоваяСтрока.Вставить("Сумма", Заказ.total.sum);Результат.Добавить(НоваяСтрока);КонецЦикла;ИначеВызватьИсключение "Ошибка получения данных Яндекс.Маркет: " + Ответ.ПолучитьТелоКакСтроку();КонецЕсли;Возврат Результат;КонецФункции// Вспомогательная функция для POST запроса (пример)Функция ВыполнитьHttpPost(URL, Тело, Заголовки) ЭкспортСоединение = Новый HTTPСоединение(НайтиХостПоURL(URL), , , , , ТаймаутЗапроса);Запрос = Новый HTTPЗапрос(URL, Заголовки);ТелоJSON = ЗаписатьJSON(Тело);Запрос.УстановитьТелоИзСтроки(ТелоJSON, "application/json");Ответ = Соединение.Отправить(Запрос, "POST");Если Ответ.КодСостояния <> HTTPКодУспеха ТогдаВызватьИсключение "Ошибка HTTP POST: " + Ответ.КодСостояния + " " + Ответ.ПолучитьТелоКакСтроку();КонецЕсли;Возврат Ответ;КонецФункции—
### Важные моменты
— Для каждого маркетплейса нужно изучить актуальную документацию API, так как методы, параметры и форматы могут меняться.
— Для Wildberries пример взят из их официального API статистики (v5).
— Для OZON и Яндекс.Маркет нужно реализовать авторизацию и пагинацию согласно их API.
— Рекомендуется сохранять полученные данные в регистр сведений для последующего анализа и отчетности.
— Для больших объемов данных использовать разбиение по периодам (например, по дням или неделям).
— Обработка ошибок и логирование обязательны для стабильной работы.—
### Рекомендации по документации API
— OZON API: https://docs.ozon.ru/api/seller/
— Wildberries API: https://suppliers-api.wildberries.ru/swagger/index.html
— Яндекс.Маркет API: https://yandex.ru/dev/market/partner/doc/dg/concepts/about.html—
Если нужно, могу помочь с конкретным примером по одному из маркетплейсов с более детальной реализацией.
—
https://infostart.ru/1c/articles/1930563/ (OZON API)
https://yandex.ru/dev/market/partner/doc/dg/concepts/about.html (Яндекс.Маркет API)
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.