Как загрузить отчет о реализации товаров Ozon в 1С:УНФ без ручной обработки Excel-файла?

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

При работе с маркетплейсом Ozon продавцы часто сталкиваются с необходимостью отразить результаты продаж в учетной системе. При скачивании отчета из личного кабинета Ozon (раздел Финансы → Документы → Отчёты о реализации) формируется файл Excel, представляющий собой печатную форму с шапкой, реквизитами, подвалом и факсимильной синей печатью. Загрузить такой документ напрямую с помощью стандартных универсальных загрузчиков или построителей сложно, так как они ожидают сплошную плоскую таблицу.

Разберем, как решить эту задачу в программах 1С (в частности, в 1С:УНФ 3.0), выясним, нужно ли вручную удалять шапку и подвал, а также рассмотрим технические нюансы программного разбора и возможности API маркетплейса.

Использование типового механизма загрузки в 1С:УНФ 3.0

Самое простое и эффективное решение — использовать штатные механизмы конфигурации. Начиная с современных версий «1С:Управление нашей фирмой» (УНФ 3.0), функционал интеграции с маркетплейсами включает специализированные парсеры отчетов о продажах.

Проанализируем особенности типовой загрузки:

  1. Файл с печатью и шапкой — это стандартный входной формат. Типовой загрузчик 1С рассчитан именно на официальный файл из раздела «Документы». Программе не требуется плоская таблица: внутренний алгоритм выполняет поиск сигнатурных заголовков колонок (например, «Артикул», «Код товара Ozon», «Реализовано») и автоматически отсекает декоративную шапку документа и его подвал с факсимиле. Ручная подготовка файла не требуется.
  2. Сопоставление номенклатуры. Для корректной загрузки строк отчета необходимо сопоставить позиции маркетплейса с номенклатурой базы. В 1С:УНФ это реализуется через сопоставление по артикулу продавца, штрихкодам или SKU маркетплейса, сохраняемым в регистре сведений НоменклатураКонтрагентов. После первичной настройки привязки система будет определять товары автоматически.

Где в личном кабинете Ozon получить плоскую таблицу без печатей

Если специфика учета требует использования собственной обработки или стороннего универсального загрузчика, которому критически необходим плоский табличный вид, получить его из личного кабинета можно несколькими путями:

  1. В разделе Финансы → Документы сформировать Позаказный отчёт о реализации. В отличие от сводной печатной формы, он выгружается в виде сплошного реестра операций по каждому заказу.
  2. Перейти в раздел Финансы → Начисления или Аналитика → Отчёты и сформировать выгрузку в формате CSV или XLSX. Данные отчеты формируются без элементов полиграфического оформления и сразу готовы к табличной обработке.

Возможности автоматизации через Ozon Seller API

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

  1. Метод /v2/finance/realization позволяет получать данные отчета о реализации в виде чистого структурированного JSON. В ответе содержатся данные по SKU, ценам, вознаграждению маркетплейса, возвратам и компенсациям.
  2. Для детализированного ежедневного контроля предусмотрен метод /v1/finance/realization/by-day.

Использование API позволяет полностью исключить этап ручного скачивания Excel-файлов из личного кабинета и последующей передачи их в учетную систему.

Программная загрузка и разбор файла средствами платформы 1С:Предприятие

Если вы разрабатываете собственную обработку для разбора официального Excel-файла Ozon, рассмотрим правильный подход к чтению данных с точки зрения платформы 1С.

Не следует использовать COM-соединение с Excel.Application: такой метод не работает на серверах под управлением Linux, требует установленного офисного пакета и нестабилен при выполнении в фоновых заданиях. Оптимальный встроенный способ платформы — использование объекта ТабличныйДокумент.

Посмотрим на пример базового алгоритма чтения файла:


ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Текст);

НомерСтрокиШапки = 0;
ВсегоСтрок = ТабДок.ВысотаТаблицы;

// Ищем строку с заголовками таблицы
Для НомерСтроки = 1 По ВсегоСтрок Цикл
    ТекстЯчейки = ТабДок.ПолучитьОбласть(НомерСтроки, 1).Текст;
    Если СтрНайти(ТекстЯчейки, "Артикул") > 0 Или СтрНайти(ТекстЯчейки, "Код товара") > 0 Тогда
        НомерСтрокиШапки = НомерСтроки;
        Прервать;
    КонецЕсли;
КонецЦикла;

Если НомерСтрокиШапки = 0 Тогда
    ВызватьИсключение "Не удалось определить строку заголовков отчета Ozon.";
КонецЕсли;

// Считываем строки данных
Для НомерСтроки = (НомерСтрокиШапки + 1) По ВсегоСтрок Цикл
    Артикул = ТабДок.ПолучитьОбласть(НомерСтроки, 1).Текст;
    
    // Прерываем обработку при достижении подвала отчета
    Если ПустаяСтрока(Артикул) Или СтрНайти(Артикул, "Итого") > 0 Тогда
        Прервать;
    КонецЕсли;
    
    // Обработка числовых показателей
    СтрокаКоличество = ТабДок.ПолучитьОбласть(НомерСтроки, 5).Текст;
    // Очищаем строку от неразрывных пробелов (код 160)
    СтрокаКоличество = СтрЗаменить(СтрокаКоличество, Символ(160), "");
    СтрокаКоличество = СтрЗаменить(СтрокаКоличество, " ", "");
    
    Количество = Число(СтрокаКоличество);
    // Дальнейшее заполнение документа...
КонецЦикла;

Обратите внимание на важные детали реализации:

  1. Неразрывные пробелы. В файлах Ozon в качестве разделителей групп разрядов в числах часто используется неразрывный пробел (код 160). Если передать такую строку напрямую в функцию Число(), платформа вызовет исключение. Строку обязательно нужно предварительно очистить через СтрЗаменить().
  2. Привязка по заголовкам, а не номерам колонок. Ozon периодически вносит изменения в форму отчета, добавляя новые графы или меняя их местами. Чтобы обработка не ломалась при очередном обновлении формата, рекомендуется программно считывать строку шапки и находить индексы нужных колонок по их названиям.
← На главную