Некоторые нюансы загрузки товаров в 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 час (на базовую выгрузку, без полировки деталей).