Автоматическое обновление цен и остатков из прайсов поставщиков

Когда в каталоге 10 000 товаров, а поставщик присылает прайс раз в день в Excel, обновлять вручную — потеря времени и источник ошибок? Мы автоматизируем этот процесс: забираем файл, парсим, обновляем цены и остатки без участия человека. Интеграция под ключ занимает от 4 до 6 рабочих дней на одног
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Автоматическое обновление цен и остатков из прайсов поставщиков
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1439
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1013
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    751
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    872
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    791
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1153

Когда в каталоге 10 000 товаров, а поставщик присылает прайс раз в день в Excel, обновлять вручную — потеря времени и источник ошибок?

Мы автоматизируем этот процесс: забираем файл, парсим, обновляем цены и остатки без участия человека. Интеграция под ключ занимает от 4 до 6 рабочих дней на одного поставщика. Время сотрудников, затрачиваемое на ручное обновление 1000 позиций, измеряется часами — и это при регулярных опечатках и пропущенных строках. Автоматизация исключает человеческий фактор и высвобождает ресурсы для более ценных задач.

Как автоматизация импорта сокращает расходы?

Ручное обновление 1000 позиций занимает 2–3 часа, ошибки неизбежны. Автоматизация сокращает время до нуля и снижает количество ошибок на 95%. Один раз настроенный процесс работает годами. Наш клиент с 15 000 SKU экономит 40 часов в месяц — это около $90–130 экономии ежемесячно. Окупаемость — 2–3 месяца. Для магазина с 50 000 товаров эффект масштабируется: экономия времени может превышать 100 часов в месяц.

Как мы получаем прайс-листы из разных источников?

Email с вложением — самый частый сценарий. Подключаемся к почтовому ящику по IMAP, ищем письма от поставщика по теме или отправителю, скачиваем вложение. Для безопасности используем отдельный ящик или папку.

$imap = imap_open('{mail.example.com:993/imap/ssl}INBOX', $user, $pass); $emails = imap_search($imap, 'FROM "[email protected]" UNSEEN'); foreach ($emails as $num) { $structure = imap_fetchstructure($imap, $num); // извлекаем вложение } 

FTP/SFTP — каждый день скачиваем файл по расписанию, сравниваем дату изменения с предыдущим запуском. Если файл не изменился — пропускаем. HTTP URL — поставщик публикует прайс по ссылке с Basic Auth. Все варианты поддерживаются из коробки.

Источник Протокол Частота обновления Сложность настройки
Email IMAP по поступлению низкая
FTP FTP/SFTP по расписанию средняя
HTTP URL HTTP по запросу низкая

Как настроить маппинг колонок для любого формата?

Проблема: у каждого поставщика свой формат — артикул то в столбце B, то в D, шапка то из 2 строк, то из 5. Решение — конфигурируемый маппинг, который хранится в Highload-блоке:

supplier_id: 42 sku_column: B # артикул в столбце B price_column: D # цена в столбце D qty_column: F # остаток в столбце F header_rows: 3 # первые 3 строки — шапка 

Для чтения Excel используем PhpSpreadsheet (преемник PHPExcel):

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filePath); $sheet = $spreadsheet->getActiveSheet(); $rows = $sheet->toArray(); 

Если поставщик сменил формат — достаточно отредактировать маппинг. Для 50 000+ SKU строим обратный индекс в памяти при запуске воркера: грузим все соответствия артикулов один раз, чтобы не долбить БД.

Как обновить цены и остатки через API Битрикс?

Цены в Битриксе хранятся в b_catalog_price. Каждый тип цены — отдельная запись. Мы обновляем их через API:

$priceType = CCatalogPriceType::GetList([], ['NAME' => 'Закупочная'])->Fetch(); CCatalogProduct::SetPrice($elementId, $priceType['ID'], $price, 'USD'); // наценка для розничной цены $retailPrice = $supplierPrice * $supplier->getMarkupCoefficient(); 

Остатки — в b_catalog_store_product. Если склады не используются, обновляем QUANTITY напрямую:

CCatalogStoreProduct::Update($storeProductId, ['AMOUNT' => $qty]); 

Идентификация товаров по артикулу: храним соответствия в свойстве инфоблока SUPPLIER_SKU или в Highload-блоке SupplierMapping. Для 50 000+ SKU используем кэш в памяти.

Сравнение ручного и автоматического импорта

Параметр Ручной импорт Автоматический импорт
Время на 1000 позиций 2–3 часа 2–3 минуты
Ошибки 5–10% <0.1%
Частота обновления раз в неделю до 24 раз в сутки
Затраты на месяц 40 часов 0 часов

Автоматизация в 50 раз быстрее и в 100 раз точнее ручного труда.

Что входит в работу по настройке интеграции?

  • Анализ источников данных и текущего формата прайс-листов поставщиков
  • Разработка конфигурации маппинга колонок под каждого поставщика
  • Настройка получения файлов (email/FTP/HTTP) и агента для их обработки
  • Реализация обновления цен и остатков через API Битрикс с учётом торговых каталогов и складов
  • Создание системы логирования ошибок и уведомлений (Telegram, Email)
  • Передача документации: описание архитектуры, инструкция по добавлению нового поставщика, контакты техподдержки
  • Обучение операторов: как распознать сбой и что делать при смене формата
  • Поддержка интеграции в течение месяца после запуска

Типовые ошибки при импорте и как их избежать

Смена формата файла. Поставщик не предупредил — парсер упал. Логирование фиксирует ошибки, мы получаем уведомление и оперативно исправляем маппинг. Для критичных поставщиков настраиваем fallback-парсер.

Дубликаты артикулов. Один артикул может оказаться в двух товарах. Решение: перед импортом проверяем уникальность артикула в маппинге. Если дубликат — останавливаем процесс и отправляем alert.

Некорректные цены. Иногда поставщик ошибается в файле. Мы используем проверку на допустимый диапазон: если цена изменилась более чем на 30%, процесс приостанавливается и требует подтверждения.

Размер прайс-листа Количество строк Время обработки Память (пик)
2 MB 5 000 7 секунд 256 MB
10 MB 25 000 35 секунд 512 MB
50 MB 120 000 3 минуты 1.5 GB

Для магазинов с частыми изменениями цен и большим ассортиментом автоматизация — единственный способ оставаться актуальными. Свяжитесь с нами для оценки вашего проекта. Мы проанализируем прайс-листы ваших поставщиков и предложим оптимальную архитектуру. Получите консультацию по автоматизации импорта — расскажем, как ускорить обновление каталога в 10 раз.