Парсинг остатков товаров с сайтов поставщиков для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Парсинг остатков товаров с сайтов поставщиков для 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1258
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    849
  • 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
    584
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    989

Парсинг остатков товаров с сайтов поставщиков для 1С-Битрикс

Ситуация: поставщик не даёт API, прайс-листы присылает раз в неделю по почте, а реальные остатки меняются ежедневно. Покупатель оформляет заказ — товара нет. Решение — парсинг витрины поставщика с обновлением поля CATALOG_QUANTITY в Битриксе.

Что именно парсим

На сайте поставщика остаток может быть представлен по-разному:

  • Числовое значение («в наличии: 47 шт») — прямо парсим число
  • Статус наличия («в наличии» / «под заказ» / «нет») — маппим на 0/1/999
  • Несколько складов — суммируем или берём ближайший склад

Иногда остатки прячутся в JS-переменных на странице (window.__PRODUCT_DATA__ = {...}) — ищем через regex в теле страницы, это быстрее headless-браузера.

Связка товаров своего каталога с позициями поставщика

Ключевой этап. Без надёжного маппинга парсинг бесполезен. Варианты:

Артикул поставщика — добавляем свойство SUPPLIER_SKU в инфоблок. При парсинге ищем элемент с этим значением через CIBlockElement::GetList() с фильтром по свойству.

XML_ID — если ранее импортировали товары из прайса поставщика, XML_ID может совпадать с его внутренним ID.

EAN/штрихкод — универсальный вариант для брендовых товаров.

Для больших каталогов (10 000+ SKU) фильтрация по свойству через ORM работает медленно. Лучше построить обратный маппинг supplier_sku → element_id в Redis или в кастомной таблице и обновлять его при изменениях каталога.

Обновление остатков в Битриксе

Обновление через CCatalogProduct::Update():

CCatalogProduct::Update($elementId, [
    'QUANTITY' => $parsedQty,
    'QUANTITY_RESERVED' => 0,
]);

Если магазин использует склады (b_catalog_store), обновляем через CCatalogStoreProduct::Update() с указанием STORE_ID.

Важно: при обновлении только количества не трогайте ACTIVE — иначе потеряете ручные правки активности. Делайте отдельный UPDATE только нужного поля.

Логика обработки «нет в наличии»

Не стоит автоматически скрывать товар при нулевом остатке — возможно, поставщик пополнит склад через день. Правильная логика:

  1. Количество = 0 → товар остаётся активным, но добавляется флаг «под заказ»
  2. Количество = 0 более N дней → уведомление менеджеру, ручное решение
  3. Товар не найден на сайте поставщика 3+ раза подряд → флаг SUPPLIER_DISCONTINUED

Флаги реализуем через свойства инфоблока или поля Highload-блока.

Таймлайн работ

Этап Срок
Анализ сайта поставщика, выбор метода парсинга 2–4 часа
Разработка парсера остатков 1–2 дня
Настройка маппинга SKU 4–8 часов
Логика обновления в Битриксе + обработка нулевых остатков 4–8 часов
Настройка расписания и мониторинга 2–4 часа

Итого: 3–5 рабочих дней на одного поставщика. Каждый дополнительный поставщик — +1–2 дня (разная структура сайтов).