Наш клиент — шинный центр «ШинСнаб.рф» — сотрудничает с различными поставщиками шин и дисков и имеет несколько собственных удаленных складов. У каждого поставщика свой формат представления данных: у кого-то есть API, кто-то в XML выгружает, а кто-то по старинке шлет в Excel на почту. Конечно, же состав данных, значения характеристик и прочее не имеют никакого унифицированного формата, каждый как может, так и делает.
У каждого поставщика — порядка 6000 наименований шин и 9000 наименований дисков. 75% товаров у разных поставщиков совпадают между собой, остальные — уникальные. Как правило, это либо остатки по складу, либо непопулярные бренды, каждый из которых представляет только один поставщик.
Итак, мы имеем: разные поставщики, разные форматы данных, разные значения свойств одного и того же товара, разные складские остатки, условия доставки и ценообразования.
Задача: используя сайт компании (отдельный технический инфоблок на нем), импортировать в единую базу данных товары от разных поставщиков, уникализировать их, сопоставляя товары по артикулу, привести все данные к формату, установленному Ozon для товаров, дополнить информацию о товарах из других источников, а также от себя, сгенерировать изображения, как принято на маркетплейсах, выгрузить все массово через API Ozon Seller, настроить обновление информации (товары, остатки, цены) в дальнейшем, выгрузку на сайт заказов с Ozon, получение уведомлений о новых заказах в Telegram.
Сразу заметим, что готового комплексного решения нам не удалось найти, поэтому поставленную задачу решали с помощью комбинации готовых решений, собственных разработок, а также опыта полученного при работе по интеграции с 1С.
Для примера опишем интеграцию с одним поставщиком — сервисом «Форточки» (4tochki.ru). Он дает возможность настроить выгрузку с нужных нам складов интересующих нас позиций, отобранных по их фильтру, и выполнять экспорт товаров раз в сутки по постоянной ссылке в разных форматах. Мы выбрали удобный для нас XML.
Для обработки полученного файла создали технический инфоблок на переработанном ранее нами сайте компании, работающем под управлением «1С-Битрикс» в редакции «Бизнес», и задали необходимые свойства для преобразования и последующего экспорта.
Импорт и преобразования реализуем с помощью уже 1000 раз нами испробованному продукту E-solutions: «Импорт из XML». Это сильнейшее решение, способное привести что угодно в заданный формат.
Какие проблемы удалось решить с помощью решения:
В итоге мы загрузили все товары от разных поставщиков в наш временный инфоблок с товарами:
Многие видели, наверное, или даже обращались по объявлениям наподобие: «наполнение карточек 100 руб/штука». Отличное предложение! А что делать если у нас 15 000 SCU? Тратить на добавление 1 500 000 р. и год труда? Можно, наверное, как-то использовать ИИ там, или детский труд, но мы поступили по-своему.
Учитывая, что у нас есть изображение шины или диска от поставщика в таком формате:
https://api-b2b.pwrs.ru/15068/pictures/tyres/Antares/Ingens_A1/src/big_0.png
которое выглядит так:
и понимая, что шаблон для карточки будет один, в него лишь необходимо подставлять свои для каждого товара значения, мы стали писать код.
Логика работы:
Cкрипт перебирает все товары, подходящие под заданные условия. Они могут быть любыми, к примеру: id инфоблока, раздел, свойство и так далее. Для каждого товара скрипт приводит изображение к стандартной для Ozon пропорции 3:4, преобразовывает в формат .PNG, выполняет кадрирование и наложение поверх картинки данных, полученных из свойств инфоблока. Холст мы создаем заранее: для шин — свой, для дисков — свой. Также берем иконки типов шин из подготовленной базы: шипы, лето, зима и так далее. Далее обрабатываем последовательно каждый элемент и вставляем данные в наш шаблон. Получаем итоговое изображение в стиле карточки маркетплейса и сохраняем его в свойство товара «Картинка для Ozon». Запуск скрипта и отчет оформляем во внешний обработчик.
При необходимости изменить картинки выполняем повторный запуск. Он обновляет созданные изображения, создавая новую копию взамен старой. Скрипт максимально универсальный, чтобы количество элементов, располагаемых поверх картинки, можно было варьировать, добавляя свойства и их значения, как при верстке. Стиль текста, картинок и так далее можно прописать аналогично CSS и легко менять потом. Например, можно изменить цвет, размер шрифта, заменить иконку шипа и так далее. Условия задаются через стандартную конструкцию «if else», то есть если свойство «сезонность — лето», то ставим иконку-солнышко, если «зима» — значит снежинку и так далее.
На выходе получаем:
Генерация 15 000 картинок занимает около 2 часов. По идее, можно создавать новые шаблоны, менять свойства и так далее в зависимости от бренда или сезона, но для первичной задачи мы оставили единый шаблон для всех шин. И обложки карточек товаров теперь выглядят так:
Поместив полученное с помощью скрипта изображение в свойство товара «Картинка для Ozon», и добавив, как писали ранее, исходное изображение в «Доп. изображения» мы решили задачу по повышению качества наполняемости карточки в Ozon. Его алгоритмы проверяют наполненность карточки, и наличие 2 и более изображений дает больше баллов, чем только 1 картинка.
Для этой задачи мы использовали решение от студии «ВебПростор»: «Интеграция с Ozon (Озон) через SELLER API: выгрузка товаров, обновление цен и остатков, заказы FBS». Решение интересное, многофункциональное, но сложное в первичной настройке. Зато поддержка решения позволяет получить быстро помощь, а при необходимости ребята могут дописать решение и его функционал под конкретные задачи, сделав модуль еще более функциональным.
Что нам удалось решить с помощью этого модуля:
Важный момент. Учитывая, что мы производим загрузку остатков с разных складов, а в фильтр необходимо ставить значение общего доступного количества, мы сделали еще одно преобразование, выполняемое при периодическом импорте в наш инфоблок. Мы считаем остатки по всем складам и записываем итоговое значение в свойство «Доступное количество». Так мы можем применить нужное условие, и работать складами в Ozon.
Дальнейшая обработка остатков, деактивация товаров, списание остатков, возврат из архива, и другие процессы настроены отдельными профилями и зациклены в cron — автоматически запускаются с интервалом раз в сутки. Итого: поставщики формируют свои файлы раз в сутки, сайт кроном забирает их раз в сутки, преобразовывает и вносит в нашу БД, далее по таймеру запускаются процессы экспорта товаров с целью создания/обновления товаров, остатков и цен. Картинка генерируется по событию добавления нового товара. Если товар новый – то для него создаем основное изображение нашим генератором картинок для Ozon.
Итог наполненной карточки можно посмотреть тут.
Оперативность и удобство обработки информации в одном окне – пожалуй, не менее важная задача, чем автоматизация бизнес-процессов. С помощью решения по интеграции мы не только экспортируем товары в Ozon, но и получаем заказы в стандартную, привычную для менеджеров компании, админ-панель интернет-магазина. Новый заказ приходит с полностью заполненными данными.
Наконец, мы направляем оповещение о новом заказе в специально созданную для этого группу Telegram. В нее добавлены менеджеры и обработка нового заказа происходит в течение максимально короткого времени, ведь если занят один – то заказ увидит второй, нет – третий и так далее. О интеграции с Telegram для бизнеса мы писали подробно здесь.
Все это позволило организовать размещение товаров на одном из крупнейших маркетплейсов в автоматическом режиме, без участия человека. Целая плеяда процессов происходит в считанные секунды, автоматизированное следование заданному регламенту обеспечивает точность его соблюдение, устраняя человеческий фактор и его последствия. Поэтому наш клиент может сконцентрироваться исключительно на продажах!