Как загрузить «Уведомление о выкупе» Wildberries в 1С, если API выдает только PDF?

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет Торговля и дистрибуция
← На главную

При автоматизации работы с маркетплейсом Wildberries (WB) многие разработчики сталкиваются с серьезным препятствием: документ «Уведомление о выкупе», необходимый для отражения продаж в страны ЕАЭС, крайне сложно получить в структурированном виде (JSON или XLS) через официальное API. В то время как обычные отчеты о реализации доступны в детализированном виде, уведомления о выкупе зачастую приходят в формате PDF, который неудобен для автоматической загрузки в 1С. Для решения подобных задач часто применяются готовые инструменты автоматизации загрузки данных и формирования документов реализации.

В этой статье мы подробно разберем, как решить эту задачу, проанализируем доступные методы API и рассмотрим альтернативные способы получения данных для корректного формирования документов в 1С.

Разбор проблемы: почему PDF — это тупик для стандартных методов?

Проанализируем ситуацию: Wildberries разделяет свои API на несколько контуров. За юридически значимые документы отвечает Documents API. При попытке вызвать метод GET /api/v1/documents/download, система возвращает архив, внутри которого находится именно PDF-файл. На текущий момент (конец 2024 — начало 2025 года) параметра, позволяющего принудительно сменить формат на XLS или JSON в этом методе, не предусмотрено.

Это создает проблему для бухгалтерии, так как «Уведомление о выкупе» является основанием для перехода права собственности и формирования УПД. Если мы хотим полной автоматизации, нам придется либо парсить PDF, либо искать данные в других разделах API, используя механизмы выгрузки и загрузки данных в формате JSON.

Способ №1: Использование Statistics API v5 (Детализация отчета)

Рассмотрим вариант получения данных через контур статистики. Это наиболее «программистский» подход, так как он позволяет получить 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);
            // Обработка массива строк...
        КонецЕсли;
    Исключение
        Сообщить("Ошибка запроса: " + ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

Способ №2: Работа с Documents API и парсинг PDF

Если нам принципиально получить данные именно из того файла, который прислал WB как официальное уведомление, нам придется работать с Documents API. Разберем по шагам этот алгоритм:

  1. Используем метод /api/v1/documents/list, чтобы найти ID нужного документа в категории «Уведомления о выкупе».
  2. Скачиваем файл методом /api/v1/documents/download.
  3. Распаковываем полученный gzip архив средствами 1С или внешних компонент.
  4. Применяем средства распознавания или специализированные инструменты чтения текста из PDF-файлов.

Для извлечения текста из PDF в 1С без использования платных OCR-сервисов можно использовать внешние утилиты, например, XpdfReader (pdftotext). Также стоит рассмотреть современные методы распознавания текста и сравнения документов или даже автоматическое распознавание PDF через ИИ для более точного извлечения данных из сложных таблиц.

Пример логики вызова парсера:


КомандаЗапуска = """" + ПутьКПрограмме + """ -layout """ + ПутьКФайлуPDF + """ """ + ПутьКВыходномуФайлу + """";
ЗапуститьПриложение(КомандаЗапуска,, Истина);

ТекстДокумента = Новый ЧтениеТекста(ПутьКВыходномуФайлу, КодировкаТекста.UTF8);
СтрокаДанных = ТекстДокумента.ПрочитатьСтроку();
Пока СтрокаДанных <> Неопределено Цикл
    // Ищем в строке ключевые слова (Артикул, Количество, Цена)
    // Используем регулярные выражения для выделения сумм
    СтрокаДанных = ТекстДокумента.ПрочитатьСтроку();
КонецЦикла;

Важный момент: структура PDF у Wildberries достаточно жесткая (табличная часть), поэтому поиск данных по координатам или ключевым словам в строке работает стабильно.

Способ №3: Использование типовых механизмов 1С:Бухгалтерия

Не стоит забывать, что фирма «1С» оперативно обновляет типовые конфигурации. Проанализируем возможности 1С:Бухгалтерия предприятия 3.0 (начиная с релизов 3.0.116). В программе уже реализован механизм загрузки данных из маркетплейсов.

Посмотрим, где это находится: раздел ПродажиМаркетплейсы и комиссионеры. По кнопке Загрузить доступен пункт Уведомление о выкупе (Wildberries). На текущий момент штатный механизм чаще всего ориентирован на загрузку из файла XLS. Аналогичным образом может быть реализована и загрузка Акта возврата бракованного товара от WildBerries в соответствующие документы системы.

Если ваша задача — полная автоматизация «без рук», вы можете написать расширение, которое будет имитировать этот штатный механизм, но подкладывать ему данные, извлеченные программно из PDF через описанный выше Способ №2.

Рекомендации по реализации интеграции

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

Таким образом, хотя Wildberries и ограничивает передачу данных в удобном формате XLS через API, связка Documents API для получения файлов и внешних библиотек парсинга текста позволяет полностью автоматизировать процесс отражения выкупов в 1С.

← На главную