При активной торговле на нескольких маркетплейсах часто возникает конфликт требований к передаваемым данным. Проанализируем распространенную ситуацию: площадка Ozon жестко требует передавать габариты (длину, ширину, высоту) в миллиметрах, а вес в граммах. В то же время Яндекс Маркет и Wildberries работают с сантиметрами и килограммами. Если передать неверные единицы измерения, алгоритмы маркетплейса могут рассчитать колоссальную стоимость логистики, либо карточка товара просто выпадет в ошибку при модерации.
В типовой конфигурации 1С:Управление торговлей 11 (УТ 11) механизм устроен так, что в карточке номенклатуры габариты базовой единицы задаются намертво. По умолчанию мы не можем указать сразу два варианта (один в мм, другой в см). Разберем по шагам несколько эффективных способов выхода из этого положения, от доработки кода до использования типовых механизмов 1С.
Если вы используете официальные расширения от самих маркетплейсов, мы можем адаптировать их под наши нужды без снятия с поддержки самой УТ 11. Рассмотрим этот вариант подробнее, так как он позволяет полностью автоматизировать процесс обмена.
Поскольку расширения не влияют на основную конфигурацию базы, мы можем прописать конвертацию прямо в коде выгрузки:
Пример логики пересчета в коде обработки выгрузки:
// Пример преобразования сантиметров в миллиметры для отправки на Ozon
Для Каждого СтрокаТовара Из ДанныеКВыгрузке Цикл
// Предполагается, что ГабаритДлина, ГабаритШирина и ГабаритВысота хранятся в см
СтрокаТовара.ДлинаММ = СтрокаТовара.ГабаритДлина * 10;
СтрокаТовара.ШиринаММ = СтрокаТовара.ГабаритШирина * 10;
СтрокаТовара.ВысотаММ = СтрокаТовара.ГабаритВысота * 10;
// Аналогично конвертируем вес из кг в граммы
СтрокаТовара.ВесГраммы = СтрокаТовара.Вес * 1000;
КонецЦикла;
Таким образом, мы один раз перепишем местами их расширение (обработаем напильником) и забудем о проблеме.
Если мы хотим обойтись типовыми настройками 1С без программирования, рассмотрим механизм упаковок. В УТ 11 габариты можно задавать не только для базовой единицы измерения в самой карточке товара, но и в подчиненном справочнике УпаковкиНоменклатуры.
Разберем алгоритм настройки:
При настройке профиля обмена или выгрузки каталога нам останется лишь указать площадкам, из какой конкретно упаковки им следует забирать весогабаритные характеристики.
Еще один типовой метод, позволяющий избежать доработок конфигурации — использование дополнительных реквизитов (справочник ДополнительныеРеквизитыИСведения). Посмотрим на реализацию этого метода:
Этот метод требует чуть больше ручного труда при заполнении карточек, но дает стопроцентный контроль над передаваемыми данными.
Проанализируем сторонние решения. Если типовая интеграция не справляется, на рынке существует множество готовых внешних модулей от интеграторов. В большинстве профессиональных решений проблема разных единиц решена «из коробки».
В настройках профиля обмена для каждого отдельного маркетплейса задается коэффициент конвертации. Например, система сама понимает, что для перевода сантиметров из УТ 11 в миллиметры для Ozon нужно умножить значение на 10. От пользователя требуется лишь выставить нужный коэффициент в пользовательском интерфейсе.
В процессе работы с расширением Ozon многие сталкиваются с другой технической проблемой: база начинает стремительно пухнуть из-за огромного количества записей технической информации в регистр сведений Ozon_ПроблемыОбмена. Выясним причину и найдем правильное решение.
Иногда программисты решают просто закомментировать код, который делает записи в этот регистр. Мы настоятельно не рекомендуем так делать! Это крайне опасный подход. Если полностью отключить логирование, мы не сможем оперативно узнать, почему товар не выгрузился на площадку (например, если API вернет ошибку из-за тех же некорректных габаритов или новых требований к характеристикам).
Более грамотный подход, не требующий изменения кода и потери данных для анализа — настроить типовое регламентное задание 1С на автоматическую очистку записей.
Настроим процедуру очистки:
Ozon_ПроблемыОбмена старше определенного количества дней (например, 7 или 14 дней).РегламентныеЗадания.Таким образом, мы защитим базу от неконтролируемого разрастания, но всегда будем иметь под рукой свежие логи для разбора текущих ошибок обмена с маркетплейсами.