При автоматизации работы с маркетплейсом Wildberries (WB) многие разработчики сталкиваются с серьезным препятствием: документ «Уведомление о выкупе», необходимый для отражения продаж в страны ЕАЭС, крайне сложно получить в структурированном виде (JSON или XLS) через официальное API. В то время как обычные отчеты о реализации доступны в детализированном виде, уведомления о выкупе зачастую приходят в формате PDF, который неудобен для автоматической загрузки в 1С. Для решения подобных задач часто применяются готовые инструменты автоматизации загрузки данных и формирования документов реализации.
В этой статье мы подробно разберем, как решить эту задачу, проанализируем доступные методы API и рассмотрим альтернативные способы получения данных для корректного формирования документов в 1С.
Проанализируем ситуацию: Wildberries разделяет свои API на несколько контуров. За юридически значимые документы отвечает Documents API. При попытке вызвать метод GET /api/v1/documents/download, система возвращает архив, внутри которого находится именно PDF-файл. На текущий момент (конец 2024 — начало 2025 года) параметра, позволяющего принудительно сменить формат на XLS или JSON в этом методе, не предусмотрено.
Это создает проблему для бухгалтерии, так как «Уведомление о выкупе» является основанием для перехода права собственности и формирования УПД. Если мы хотим полной автоматизации, нам придется либо парсить PDF, либо искать данные в других разделах API, используя механизмы выгрузки и загрузки данных в формате JSON.
Рассмотрим вариант получения данных через контур статистики. Это наиболее «программистский» подход, так как он позволяет получить JSON-структуру. Данные о выкупах технически присутствуют в общем отчете о реализации.
Для этого мы можем использовать метод:
GET https://statistics-api.wildberries.ru/api/v5/supplier/reportDetailByPeriod
Выясним причину, почему этот метод не всегда идеален. В общем потоке данных операции выкупа помечаются специфическими признаками. Нам нужно проанализировать поле doc_type (тип документа) или страну реализации. Однако, как отмечают опытные разработчики, данные в этом API могут незначительно расходиться с финальным PDF-файлом (на копейки) из-за особенностей округления комиссий и логистики на стороне маркетплейса. Для налоговой отчетности первичным является именно PDF, поэтому использование данных из API статистики требует обязательной проверки итоговых сумм.
Пример формирования запроса в 1С для получения данных:
&НаСервере
Процедура ПолучитьДанныеВыкупаИзСтатистики()
Токен = "ВАШ_ТОКЕН_СТАТИСТИКИ";
ДатаНачала = Формат(Объект.ПериодС, "ДФ=yyyy-MM-ddTHH:mm:ssZ");
ДатаКонца = Формат(Объект.ПериодПо, "ДФ=yyyy-MM-ddTHH:mm:ssZ");
URL = "https://statistics-api.wildberries.ru/api/v5/supplier/reportDetailByPeriod?dateFrom=" + ДатаНачала + "&dateTo=" + ДатаКонца;
HTTPЗапрос = Новый HTTPЗапрос(URL);
HTTPЗапрос.Заголовки.Вставить("Authorization", Токен);
Соединение = Новый HTTPСоединение("statistics-api.wildberries.ru",,,, Неопределено, Истина);
Попытка
Ответ = Соединение.Получить(HTTPЗапрос);
Если Ответ.КодСостояния = 200 Тогда
// Далее парсим JSON и ищем строки, относящиеся к выкупу
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Данные = ПрочитатьJSON(ЧтениеJSON);
// Обработка массива строк...
КонецЕсли;
Исключение
Сообщить("Ошибка запроса: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Если нам принципиально получить данные именно из того файла, который прислал WB как официальное уведомление, нам придется работать с Documents API. Разберем по шагам этот алгоритм:
/api/v1/documents/list, чтобы найти ID нужного документа в категории «Уведомления о выкупе»./api/v1/documents/download.gzip архив средствами 1С или внешних компонент.Для извлечения текста из PDF в 1С без использования платных OCR-сервисов можно использовать внешние утилиты, например, XpdfReader (pdftotext). Также стоит рассмотреть современные методы распознавания текста и сравнения документов или даже автоматическое распознавание PDF через ИИ для более точного извлечения данных из сложных таблиц.
Пример логики вызова парсера:
КомандаЗапуска = """" + ПутьКПрограмме + """ -layout """ + ПутьКФайлуPDF + """ """ + ПутьКВыходномуФайлу + """";
ЗапуститьПриложение(КомандаЗапуска,, Истина);
ТекстДокумента = Новый ЧтениеТекста(ПутьКВыходномуФайлу, КодировкаТекста.UTF8);
СтрокаДанных = ТекстДокумента.ПрочитатьСтроку();
Пока СтрокаДанных <> Неопределено Цикл
// Ищем в строке ключевые слова (Артикул, Количество, Цена)
// Используем регулярные выражения для выделения сумм
СтрокаДанных = ТекстДокумента.ПрочитатьСтроку();
КонецЦикла;
Важный момент: структура PDF у Wildberries достаточно жесткая (табличная часть), поэтому поиск данных по координатам или ключевым словам в строке работает стабильно.
Не стоит забывать, что фирма «1С» оперативно обновляет типовые конфигурации. Проанализируем возможности 1С:Бухгалтерия предприятия 3.0 (начиная с релизов 3.0.116). В программе уже реализован механизм загрузки данных из маркетплейсов.
Посмотрим, где это находится: раздел Продажи — Маркетплейсы и комиссионеры. По кнопке Загрузить доступен пункт Уведомление о выкупе (Wildberries). На текущий момент штатный механизм чаще всего ориентирован на загрузку из файла XLS. Аналогичным образом может быть реализована и загрузка Акта возврата бракованного товара от WildBerries в соответствующие документы системы.
Если ваша задача — полная автоматизация «без рук», вы можете написать расширение, которое будет имитировать этот штатный механизм, но подкладывать ему данные, извлеченные программно из PDF через описанный выше Способ №2.
Проанализировав все варианты, мы рекомендуем следующий гибридный подход для максимально стабильной работы:
Statistics API v5. Это позволит быстро (ежедневно) видеть предварительные суммы выкупов и планировать остатки.Documents API. Если вы не хотите настраивать сложный парсинг PDF, реализуйте в 1С рабоче место, куда система будет автоматически скачивать эти PDF-файлы, а бухгалтер будет один раз в неделю загружать их через штатный механизм (предварительно сохранив из PDF в XLS или используя инструменты распознавания).Реализация: Выкуп комиссионером с итоговой суммой в скачанном PDF. Это обезопасит от расхождений в «копейках», о которых предупреждали участники форума.Таким образом, хотя Wildberries и ограничивает передачу данных в удобном формате XLS через API, связка Documents API для получения файлов и внешних библиотек парсинга текста позволяет полностью автоматизировать процесс отражения выкупов в 1С.