При работе с маркетплейсом Ozon в программе 1С:Бухгалтерия 3.0 пользователи часто сталкиваются с тем, что стандартный механизм сопоставления номенклатуры работает по наименованию. Это не всегда удобно и надежно: наименования могут незначительно отличаться (лишний пробел, символ или кавычка), что приводит к дублированию позиций или ошибкам в учете. В данной статье мы разберем, как реализовать сопоставление по внутреннему коду или артикулу, а также коснемся важных аспектов признания выручки на стыке налоговых периодов.
Когда выполняется загрузка отчета комиссионера OZON для юридических лиц из файла (Excel/CSV), система вызывает встроенную обработку СопоставлениеНоменклатурыБЭД (Библиотека электронного документооборота). По умолчанию она пытается найти товар в справочнике Номенклатура, используя алгоритмы нечеткого поиска по строке наименования. Однако в данных, которые передает Ozon, всегда присутствует поле Артикул (в терминах Ozon это Offer ID). Для большинства компаний именно артикул является уникальным идентификатором, который совпадает либо с кодом товара в 1С, либо с реквизитом Артикул в карточке номенклатуры.
Рассмотрим ситуацию: в форме сопоставления колонка с артикулом заполнена, но автоматического поиска по ней не происходит. Проанализируем, как можно автоматизировать этот процесс с помощью небольшой программной доработки.
Для того чтобы система начала искать товар по коду, можно добавить на форму обработки СопоставлениеНоменклатурыБЭД дополнительную команду (кнопку). Рассмотрим алгоритм, который переберет все незаполненные строки и попытается найти номенклатуру в базе по значению из колонки артикула.
Если в вашей базе код товара в 1С жестко соответствует Offer ID на Ozon, мы можем использовать следующий код:
Процедура ПересопоставитьПоКодуНаСервере()
// Обходим коллекцию строк сопоставления, которую подготовила обработка
Для каждого Стр Из Объект.Сопоставление Цикл
// Ищем номенклатуру по коду, указанному в колонке Артикул
НайденнаяСсылка = Справочники.Номенклатура.НайтиПоКоду(Стр.Артикул);
Если Не НайденнаяСсылка.Пустая() Тогда
Стр.Номенклатура = НайденнаяСсылка;
Стр.Сопоставлено = Истина;
// Вызываем стандартный обработчик изменения, чтобы система зафиксировала выбор
СопоставлениеПриИзмененииНаСервере(Стр);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Однако на практике чаще встречается ситуация, когда поиск нужно вести не по внутреннему коду 1С (который обычно генерируется автоматически), а по реквизиту Артикул в карточке товара. Разберем более универсальный вариант кода:
Процедура СопоставитьПоРеквизитуАртикул()
Для каждого СтрокаТаблицы Из Объект.Сопоставление Цикл
// Пропускаем, если номенклатура уже была сопоставлена ранее
Если ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура) Тогда
Продолжить;
КонецЕсли;
// Ищем по реквизиту "Артикул", который есть в справочнике Номенклатура
СсылкаНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", СтрокаТаблицы.Артикул);
Если Не СсылкаНоменклатура.Пустая() Тогда
СтрокаТаблицы.Номенклатура = СсылкаНоменклатура;
СтрокаТаблицы.Сопоставлено = Истина;
// Важно вызвать серверную процедуру обновления статуса строки
СопоставлениеПриИзмененииНаСервере(СтрокаТаблицы);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Важный нюанс: метод НайтиПоРеквизиту сработает только в том случае, если у реквизита Артикул в метаданных включено индексирование. В типовой 1С:Бухгалтерии это поле обычно индексировано, но если вы используете кастомные реквизиты, проверьте это в Конфигураторе.
Проанализируем еще одну проблему, поднятую в обсуждении: разрыв дат между пробитием чека маркетплейсом и получением отчета комиссионера. Это критично для налогового учета, особенно на УСН (кассовый метод) или при жестком контроле со стороны ИФНС через данные ККТ.
Ситуация: покупатель приобрел товар 30 сентября (Ozon пробил чек), а отчет о реализации сформирован 3 октября (попал в следующий квартал). Налоговая видит пробитый чек в сентябре и может потребовать включить эту сумму в доходы 3-го квартала.
Разберем варианты решения этой задачи:
Отчет комиссионера о продажах.Номенклатура маркетплейсов, где хранится связь между вашим товаром и SKU Ozon. Это исключает необходимость поиска по наименованию или артикулу при каждой загрузке.Также для корректного формирования финансового результата важна своевременная загрузка возвратов от Ozon и загрузка из Ozon отчета о Компенсациях и Возмещении убытков.
Многие пользователи задаются вопросом: откуда Ozon берет ставку НДС? Проанализируем этот момент. Маркетплейс является лишь агентом, он транслирует ту ставку НДС, которую вы указали в карточке товара в личном кабинете Ozon Seller. Если вы указали "Без НДС", чек будет пробит без налога. При загрузке в 1С программа подставит ставку из вашей карточки Номенклатура. Если данные в 1С и в отчете Ozon не совпадут, документ может не провестись или сформировать некорректные проводки. Рекомендуем периодически сверять настройки НДС в личном кабинете маркетплейса и в базе 1С, чтобы избежать расхождений в книге продаж.
Подведем итоги нашего анализа. Для корректной автоматизации работы с Ozon в 1С:Бухгалтерии 3.0 следует:
Применение данных подходов позволит минимизировать ручной труд бухгалтера и избежать претензий со стороны налоговых органов из-за расхождений в данных онлайн-касс и деклараций.