Как выгружать габариты товаров в разных единицах измерения (мм и см) для Ozon и Яндекс.Маркет в 1С:УТ 11?

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

При активной торговле на нескольких маркетплейсах часто возникает конфликт требований к передаваемым данным. Проанализируем распространенную ситуацию: площадка Ozon жестко требует передавать габариты (длину, ширину, высоту) в миллиметрах, а вес в граммах. В то же время Яндекс Маркет и Wildberries работают с сантиметрами и килограммами. Если передать неверные единицы измерения, алгоритмы маркетплейса могут рассчитать колоссальную стоимость логистики, либо карточка товара просто выпадет в ошибку при модерации.

В типовой конфигурации 1С:Управление торговлей 11 (УТ 11) механизм устроен так, что в карточке номенклатуры габариты базовой единицы задаются намертво. По умолчанию мы не можем указать сразу два варианта (один в мм, другой в см). Разберем по шагам несколько эффективных способов выхода из этого положения, от доработки кода до использования типовых механизмов 1С.

Способ 1: Доработка расширений маркетплейсов (Программный подход)

Если вы используете официальные расширения от самих маркетплейсов, мы можем адаптировать их под наши нужды без снятия с поддержки самой УТ 11. Рассмотрим этот вариант подробнее, так как он позволяет полностью автоматизировать процесс обмена.

Поскольку расширения не влияют на основную конфигурацию базы, мы можем прописать конвертацию прямо в коде выгрузки:

  1. Откроем расширение нужного маркетплейса (например, Ozon) в конфигураторе.
  2. Найдем общий модуль или обработку, которая отвечает за сбор данных о товарах перед отправкой по API.
  3. Добавим пересчет габаритов. Например, если в базе УТ 11 габариты ведутся в сантиметрах, то перед формированием JSON-пакета для Ozon умножим значения на 10.

Пример логики пересчета в коде обработки выгрузки:


// Пример преобразования сантиметров в миллиметры для отправки на Ozon
Для Каждого СтрокаТовара Из ДанныеКВыгрузке Цикл
    // Предполагается, что ГабаритДлина, ГабаритШирина и ГабаритВысота хранятся в см
    СтрокаТовара.ДлинаММ = СтрокаТовара.ГабаритДлина * 10;
    СтрокаТовара.ШиринаММ = СтрокаТовара.ГабаритШирина * 10;
    СтрокаТовара.ВысотаММ = СтрокаТовара.ГабаритВысота * 10;
    
    // Аналогично конвертируем вес из кг в граммы
    СтрокаТовара.ВесГраммы = СтрокаТовара.Вес * 1000;
КонецЦикла;

Таким образом, мы один раз перепишем местами их расширение (обработаем напильником) и забудем о проблеме.

Способ 2: Использование механизма "Упаковки номенклатуры"

Если мы хотим обойтись типовыми настройками 1С без программирования, рассмотрим механизм упаковок. В УТ 11 габариты можно задавать не только для базовой единицы измерения в самой карточке товара, но и в подчиненном справочнике УпаковкиНоменклатуры.

Разберем алгоритм настройки:

  1. Перейдем в раздел настроек номенклатуры и убедимся, что включена функциональная опция использования упаковок.
  2. Создадим индивидуальные или общие наборы упаковок для товаров.
  3. Вместо одной базовой единицы создадим две упаковки: "Штука (Ozon)" и "Штука (Яндекс)".
  4. В карточке упаковки "Штука (Ozon)" укажем габариты в миллиметрах.
  5. В карточке упаковки "Штука (Яндекс)" укажем габариты в сантиметрах.

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

Способ 3: Создание дополнительных реквизитов

Еще один типовой метод, позволяющий избежать доработок конфигурации — использование дополнительных реквизитов (справочник ДополнительныеРеквизитыИСведения). Посмотрим на реализацию этого метода:

  1. Перейдем в настройки НСИ и создадим новые дополнительные реквизиты для номенклатуры.
  2. Назовем их, например: "Длина для Озона (мм)", "Ширина для Озона (мм)" и так далее.
  3. Заполним эти реквизиты для товаров, которые выгружаются на площадку.
  4. В настройках интеграции маркетплейса (многие типовые модули поддерживают маппинг полей) сопоставим требуемые параметры API не со стандартными габаритами 1С, а с нашими новыми дополнительными реквизитами.

Этот метод требует чуть больше ручного труда при заполнении карточек, но дает стопроцентный контроль над передаваемыми данными.

Способ 4: Готовые внешние модули и коэффициенты

Проанализируем сторонние решения. Если типовая интеграция не справляется, на рынке существует множество готовых внешних модулей от интеграторов. В большинстве профессиональных решений проблема разных единиц решена «из коробки».

В настройках профиля обмена для каждого отдельного маркетплейса задается коэффициент конвертации. Например, система сама понимает, что для перевода сантиметров из УТ 11 в миллиметры для Ozon нужно умножить значение на 10. От пользователя требуется лишь выставить нужный коэффициент в пользовательском интерфейсе.

Важное дополнение: Оптимизация логов обмена (регистр Ozon_ПроблемыОбмена)

В процессе работы с расширением Ozon многие сталкиваются с другой технической проблемой: база начинает стремительно пухнуть из-за огромного количества записей технической информации в регистр сведений Ozon_ПроблемыОбмена. Выясним причину и найдем правильное решение.

Иногда программисты решают просто закомментировать код, который делает записи в этот регистр. Мы настоятельно не рекомендуем так делать! Это крайне опасный подход. Если полностью отключить логирование, мы не сможем оперативно узнать, почему товар не выгрузился на площадку (например, если API вернет ошибку из-за тех же некорректных габаритов или новых требований к характеристикам).

Более грамотный подход, не требующий изменения кода и потери данных для анализа — настроить типовое регламентное задание 1С на автоматическую очистку записей.

Настроим процедуру очистки:

  1. Создадим небольшую внешнюю обработку или добавим процедуру в расширение, которая будет удалять записи из регистра Ozon_ПроблемыОбмена старше определенного количества дней (например, 7 или 14 дней).
  2. Подключим эту обработку к подсистеме РегламентныеЗадания.
  3. Настроим расписание, чтобы очистка выполнялась раз в сутки ночью.

Таким образом, мы защитим базу от неконтролируемого разрастания, но всегда будем иметь под рукой свежие логи для разбора текущих ошибок обмена с маркетплейсами.

← На главную