АКАлександр Ковалев
Кейсы Выгрузка CSV

Кейс · Bitrix · импорт

Ежедневная выгрузка 80 000 товаров из CSV

Интернет-магазин «Офисная Служба»: 80 000 товаров и 9 000 разделов обновляются из CSV каждый день. Выгрузка идёт отдельным процессом и не мешает покупателям.

1С передаёт товары в магазин через CSV; магазин выгружает заказы обратно в 1С 1Сучётная система CSV товароввыгрузка Магазинкаталог · заказы Заказывыгрузка в 1С
товаров
80 000
разделов
9 000
полная выгрузка
45 мин
цены и остатки
20 мин

О проекте

Общая информация

Клиент
«Офисная Служба» — канцтовары для офиса, Санкт-Петербург
Сайт
3259404.ru
Объём
80 000 товаров и 9 000 разделов
Платформа
Bitrix
Стек
Bitrix, PHP, MongoDB, CSV
Частота
Каталог — раз в день, цены и остатки — дважды в день

Задача

Каталог, который нужно обновлять каждый день

До проекта автоматической выгрузки не было вообще. Каталог на 80 000 товаров и 9 000 разделов нужно было обновлять из CSV ежедневно — вместе с ценами, остатками, скидками и свойствами, не останавливая магазин.

  • Настроить выгрузку с нуля: раньше каталог обновлялся без автоматизации.
  • Обновлять 80 000 товаров и 9 000 разделов раз в день, цены и остатки — дважды в день.
  • Не блокировать сайт: загрузка не должна мешать посетителям оформлять заказы.
  • Передавать изменения целиком: новые позиции, изменившиеся и исчезнувшие.

Как устроено

Пять этапов выгрузки

Нажмите на блок схемы или переключайтесь стрелками — покажу, что происходит на каждом этапе.

01 / 05

CSV 6 файлов Процесс очередь Дельта MongoDB Каталог Bitrix Цены 2 раза в день

Шесть файлов в строгом порядке

Данные приходят набором CSV: разделы, свойства, теги ссылок, товары, цены и остатки, скидки. Следующий файл начинается только после завершения предыдущего.

  • Порядок задан в конфигурации выгрузки.
  • Если процесс остановился, он продолжается с места остановки.

Порядок файлов

Строгая последовательность

Файлы идут в заданном порядке: каждый следующий шаг начинается только после завершения предыдущего.

  1. РазделыСтруктура каталога и вложенность разделов.
  2. СвойстваХарактеристики товаров для карточек и фильтров.
  3. Теги ссылокПривязки и теги, по которым товары собираются в подборки.
  4. ТоварыКарточки товаров и привязка к разделам.
  5. Цены и остаткиОтдельный контур: не перезаписывает основной инфоблок товаров.
  6. СкидкиАкционные правила и размер скидки.

Решения

Что оказалось важным

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

Отдельная задача

Выгрузка вынесена в отдельный процесс и не блокирует сайт: посетители продолжают работать с каталогом, пока идёт обновление. Во время выгрузки процессор загружен примерно на 40%.

Дельта в MongoDB

В MongoDB хранится дельта изменений: если товар не менялся, он не выгружается повторно. Это сокращает объём работы и время выгрузки.

Контроль на стороне 1С

Дублей нет: уникальность и целостность данных контролирует 1С, а выгрузка приходит уже согласованной.

Результат

Каталог под контролем

Ассортимент на сайте совпадает с выгрузкой: товары и разделы обновляются ежедневно, цены и остатки — дважды в день, а всё, чего нет в выгрузке, отключается автоматически.

Скорость

Полная выгрузка занимает около 45 минут, обновление цен и остатков — около 20 минут. И то и другое идёт в фоне и не останавливает магазин.

Управление ассортиментом

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

Заказы

Выгрузка заказов — по событию

Заказы уходят не по расписанию, а в момент создания: событие фиксирует заказ целиком и выгружает его на сервер 1С со всей информацией по заказу.

Событие срабатывает при создании заказа в Bitrix, поэтому ждать ночной синхронизации не нужно.

Новый заказBitrix
Полные данныесостав · клиент · оплата
Сервер 1Ссразу после создания

Дальше

Похожая задача?

Расскажите, откуда приходят данные и что должно оказаться в каталоге — предложу схему выгрузки и оценю объём работ.