Как сопоставить номенклатуру по артикулу при загрузке отчетов Ozon в 1С:Бухгалтерия 3.0

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

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

Анализ стандартного механизма сопоставления

Когда выполняется загрузка отчета комиссионера OZON для юридических лиц из файла (Excel/CSV), система вызывает встроенную обработку СопоставлениеНоменклатурыБЭД (Библиотека электронного документооборота). По умолчанию она пытается найти товар в справочнике Номенклатура, используя алгоритмы нечеткого поиска по строке наименования. Однако в данных, которые передает Ozon, всегда присутствует поле Артикул (в терминах Ozon это Offer ID). Для большинства компаний именно артикул является уникальным идентификатором, который совпадает либо с кодом товара в 1С, либо с реквизитом Артикул в карточке номенклатуры.

Рассмотрим ситуацию: в форме сопоставления колонка с артикулом заполнена, но автоматического поиска по ней не происходит. Проанализируем, как можно автоматизировать этот процесс с помощью небольшой программной доработки.

Программное решение для сопоставления по коду или артикулу

Для того чтобы система начала искать товар по коду, можно добавить на форму обработки СопоставлениеНоменклатурыБЭД дополнительную команду (кнопку). Рассмотрим алгоритм, который переберет все незаполненные строки и попытается найти номенклатуру в базе по значению из колонки артикула.

Если в вашей базе код товара в 1С жестко соответствует Offer ID на Ozon, мы можем использовать следующий код:


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

Однако на практике чаще встречается ситуация, когда поиск нужно вести не по внутреннему коду 1С (который обычно генерируется автоматически), а по реквизиту Артикул в карточке товара. Разберем более универсальный вариант кода:


Процедура СопоставитьПоРеквизитуАртикул()
    Для каждого СтрокаТаблицы Из Объект.Сопоставление Цикл
        // Пропускаем, если номенклатура уже была сопоставлена ранее
        Если ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура) Тогда
            Продолжить;
        КонецЕсли;

        // Ищем по реквизиту "Артикул", который есть в справочнике Номенклатура
        СсылкаНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", СтрокаТаблицы.Артикул);

        Если Не СсылкаНоменклатура.Пустая() Тогда
            СтрокаТаблицы.Номенклатура = СсылкаНоменклатура;
            СтрокаТаблицы.Сопоставлено = Истина;
            // Важно вызвать серверную процедуру обновления статуса строки
            СопоставлениеПриИзмененииНаСервере(СтрокаТаблицы);
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Важный нюанс: метод НайтиПоРеквизиту сработает только в том случае, если у реквизита Артикул в метаданных включено индексирование. В типовой 1С:Бухгалтерии это поле обычно индексировано, но если вы используете кастомные реквизиты, проверьте это в Конфигураторе.

Методологическая проблема: выручка на стыке периодов

Проанализируем еще одну проблему, поднятую в обсуждении: разрыв дат между пробитием чека маркетплейсом и получением отчета комиссионера. Это критично для налогового учета, особенно на УСН (кассовый метод) или при жестком контроле со стороны ИФНС через данные ККТ.

Ситуация: покупатель приобрел товар 30 сентября (Ozon пробил чек), а отчет о реализации сформирован 3 октября (попал в следующий квартал). Налоговая видит пробитый чек в сентябре и может потребовать включить эту сумму в доходы 3-го квартала.

Разберем варианты решения этой задачи:

  1. Разбиение отчета вручную. Рассмотрим этот способ как самый простой в реализации, но трудоемкий. Вы разделяете один файл отчета на два: до конца квартала и после. В 1С создаются два документа Отчет комиссионера о продажах.
  2. Использование транзакционных отчетов. В личном кабинете Ozon можно выгрузить "Отчет по транзакциям", на базе которого строится детальная аналитика продаж на Ozon. В отличие от итогового отчета реализации, он детализирован по дням. Проанализируем возможность его использования: загружая транзакции за конкретные дни (например, с 28 по 30 сентября), вы сможете точно отразить выручку в нужном периоде.
  3. Интеграция через API. Современные методы обмена позволяют 1С запрашивать данные напрямую из облака маркетплейса. Так реализуется, например, загрузка данных о выкупленных товарах из API Ozon и автоматическая загрузка Акта приемки товара от Ozon в документ реализации. При использовании API сопоставление происходит через специальный регистр Номенклатура маркетплейсов, где хранится связь между вашим товаром и SKU Ozon. Это исключает необходимость поиска по наименованию или артикулу при каждой загрузке.

Также для корректного формирования финансового результата важна своевременная загрузка возвратов от Ozon и загрузка из Ozon отчета о Компенсациях и Возмещении убытков.

Рекомендации по настройке НДС

Многие пользователи задаются вопросом: откуда Ozon берет ставку НДС? Проанализируем этот момент. Маркетплейс является лишь агентом, он транслирует ту ставку НДС, которую вы указали в карточке товара в личном кабинете Ozon Seller. Если вы указали "Без НДС", чек будет пробит без налога. При загрузке в 1С программа подставит ставку из вашей карточки Номенклатура. Если данные в 1С и в отчете Ozon не совпадут, документ может не провестись или сформировать некорректные проводки. Рекомендуем периодически сверять настройки НДС в личном кабинете маркетплейса и в базе 1С, чтобы избежать расхождений в книге продаж.

Выводы

Подведем итоги нашего анализа. Для корректной автоматизации работы с Ozon в 1С:Бухгалтерии 3.0 следует:

Применение данных подходов позволит минимизировать ручной труд бухгалтера и избежать претензий со стороны налоговых органов из-за расхождений в данных онлайн-касс и деклараций.

← На главную