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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Автоматическое обновление цен и остатков из прайсов поставщиков
Средний
~1-2 недели
Часто задаваемые вопросы

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

Этапы разработки

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1330
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    924
  • 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
    672
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    815
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    714
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1051

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

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

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

Ручное обновление 1000 позиций занимает 2–3 часа, ошибки неизбежны. Автоматизация сокращает время до нуля и снижает количество ошибок на 95%. Один раз настроенный процесс работает годами. Наш клиент с 15 000 SKU экономит 40 часов в месяц — это десятки тысяч рублей экономии ежемесячно. Окупаемость — 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, 'RUB');
// наценка для розничной цены
$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 раз.