Некоторые нюансы загрузки товаров в 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 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

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

Добавить комментарий

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