Некоторые нюансы загрузки товаров в Ozon через Excel

Решал задачу выгрузки данных из 1С в файлы Excel, чтобы из этих файлов загрузить данные о товарах в OZON.

Для каждого типа товаров Ozon имеет свой Excel-шаблон выгрузки. Но многие поля у этих шаблонов похожие.

Товары заполняются на закладке «Шаблон для поставщика».

Обязательные поля выделены красным:

Я столкнулся с тем, что не знал, откуда взять список доступных полей. И только совершенно по ошибке натолкнулся на то, что в этом файле есть скрытые листы. А именно очень полезный лист «validation», который для каждой колонки содержит список доступных значений.

Так например для колонки I с названием «Коммерческий тип» содержатся варианты его значения:

Я сделал код выгрузки в Excel достаточно гибким, чтобы он ориентировался на имена колонок:

НомерСтрокиЭксель = 4;
Для Каждого
СтрокаТовара ИЗ Строки Цикл

   
ЗаписатьЯчейкуOZON(ЭксельЛист, СооКолонки, НомерСтрокиЭксель, «АРТИКУЛ», СтрокаТовара.АртикулТовара);
   
ЗаписатьЯчейкуOZON(ЭксельЛист, СооКолонки, НомерСтрокиЭксель, «ЦЕНАРУБ», СтрокаТовара.ЦенаТовара);
   
ЗаписатьЯчейкуOZON(ЭксельЛист, СооКолонки, НомерСтрокиЭксель, «НДС%», «Не облагается»);
   
ЗаписатьЯчейкуOZON(ЭксельЛист, СооКолонки, НомерСтрокиЭксель, «ВЕСВУПАКОВКЕГ», СтрокаТовара.ВесТовара);

   
ЗаписатьЯчейкуOZON(ЭксельЛист, СооКолонки, НомерСтрокиЭксель, «КОММЕРЧЕСКИЙТИП», ОбщийКоммерческийТип);

   
ЗаписатьЯчейкуOZON(ЭксельЛист, СооКолонки, НомерСтрокиЭксель, «ВЫСОТАУПАКОВКИММ», СтрокаТовара.ВысотаТовара);
   
ЗаписатьЯчейкуOZON(ЭксельЛист, СооКолонки, НомерСтрокиЭксель, «ШИРИНАУПАКОВКИММ», СтрокаТовара.ШиринаТовара);
   
ЗаписатьЯчейкуOZON(ЭксельЛист, СооКолонки, НомерСтрокиЭксель, «ДЛИНАУПАКОВКИ», СтрокаТовара.ДлинаТовара);
   
ЗаписатьЯчейкуOZON(ЭксельЛист, СооКолонки, НомерСтрокиЭксель, «ТИП», «Книга»);       //Тип — обязательное поле

   

   
НомерСтрокиЭксель = НомерСтрокиЭксель + 1;

КонецЦикла

Сами имена колонок привожу к верхнему регистру и очищаю от лишних символов:

//Определяем состав колонок
ВсегоКолонок = ЭксельЛист.Cells(1,1).SpecialCells(11).Column;
СтрокаШапки = 3;
СооКолонки = Новый Соответствие();
Для
Кол = 1 По ВсегоКолонок Цикл
   
//Приводим имя колонки к верхнему регистру, убираем запятые, точки, звездочки, пробелы
   
ТекИмяКолонки = СокрЛП(ЭксельЛист.Cells(СтрокаШапки, Кол).Value);
   
ТекИмяКолонки = Врег(ТекИмяКолонки);
   
ТекИмяКолонки = СтрЗаменить(ТекИмяКолонки, «*», «»);
   
ТекИмяКолонки = СтрЗаменить(ТекИмяКолонки, » «, «»);
   
ТекИмяКолонки = СтрЗаменить(ТекИмяКолонки, «.», «»);
   
ТекИмяКолонки = СтрЗаменить(ТекИмяКолонки, «,», «»);
   
СооКолонки.Вставить(ТекИмяКолонки, Кол);
КонецЦикла;

Обработка выгрузки позволяет выгружать по нескольим шаблонам. Данные для выгрузки извлекаются на сервере запросом, потом передаются в виде массива структур на клиента и там уже работает выгрузка в Excel через OLE.

Время факт: 2.5 час (на базовую выгрузку, без полировки деталей).

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментариев 6

  1. Ромыч:

    Добрый день. Хочу ввести цену в шаблоне выдает «неверный формат данных».
    Не знаете в чем дело?

    • знаю, там есть то ли скрытый лист, то ли скрытая колонка, где указаны возможные значения. Надо использовать только эти значения для вариативных колонок.

  2. Вячеслав:

    Когда указываю в шаблоне размеры изделий, появляется ошибка «Выберите значение из списка». При выборе значений из списка происходит то же самое. Так как товаров много, то для экономии времени вставляю сразу целый столбец готовых размеров. По умолчанию скопированные ячейки экселя имеют общий формат. В таков виде система Озон не пропускает товары. Помогает одна хитрость: указываю в столбце размеров текстовый формат и после чего в углу ячеек появляется зеленый треугольник с предупреждением. Но появляется он не у всех, а только у ячеек с целыми числами. Ячейки с дробными значениями приходится два раза кликать. У меня только так товары загружаются без ошибок. Плохо только то, что приходится тратить время на ручное исправление тысячи товаров… Может есть более быстрый способ это исправить?

    • ну это классическая проблема Экселя и имеет классическое решение.
      Можно поиграться со специальной вставкой (типа вставить как числа).
      Можно заменить в блоке запятую на точку (или наоборот). При замене она сама преобразует в числовой формат.

  3. руслан:

    а Вы не знаете в чем может быть проблема и как решить , выдает такое: Вы загрузили товар через устаревший XLS-шаблон. Отредактируйте товар или скачайте, заполните и загрузите новый XLS-шаблон
    Спасибр

    • Ну он же вам так и пишет — скачайте новый шаблон. Зайдите на сайт Озона и скачайте новый шаблон.

Добавить комментарий для fixin Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *