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

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

Каждое утро — новый прайс-лист от поставщика. Excel, CSV или PDF с тысячами позиций. Переносить вручную? Ошибки неизбежны, время уходит. Недавно обратился клиент с 15 поставщиками — менеджеры тратили 4 часа в день на ручное обновление цен. Мы автоматизируем этот процесс: пишем парсер, который читает прайс и обновляет каталог в 1С-Битрикс. За 2-3 дня получаете готовую систему импорта под одного поставщика. Для нескольких — настраиваемая конфигурация без переписывания кода. Экономия времени достигает 80%.

Почему парсинг прайс-листов — это не просто загрузка CSV?

Прайс-листы поставщиков редко бывают стандартными. Каждый — своя структура, свои столбцы, своя кодировка. У одного артикул в колонке A, у другого — в E. У одного три строки шапки, у другого — одна. Парсер должен быть настраиваемым: для каждого поставщика задаётся маппинг столбцов.

Формат Особенности парсинга
Excel (.xlsx, .xls) PhpSpreadsheet для чтения; нужно найти строку заголовков, пропустить рекламные блоки
CSV fgetcsv(), учитывать разделитель (; или ,) и кодировку (Windows-1251 у российских поставщиков)
ODS (OpenDocument) PhpSpreadsheet поддерживает
PDF Сложнее всего: pdftotext или API сервиса OCR; структура теряется

Как настроить маппинг для каждого поставщика?

Хранение настроек поставщиков лучше вынести в отдельную структуру (инфоблок или кастомная таблица):

Поставщик:
  - Название
  - Способ получения прайса (FTP / email / HTTP / Telegram)
  - Формат файла
  - Маппинг колонок: {артикул: A, название: B, цена: C, остаток: D}
  - Правила трансформации: {цена: умножить на 1.3, название: префикс "Бренд X"}
  - Расписание обновления
  - Тип цены в Битрикс (ID прайс-листа)

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

$mapping = [
    'article' => 'A',
    'name' => 'B',
    'price' => 'C',
    'stock' => 'D',
    'transformations' => ['price' => 'multiply(1.3)']
];

Получение прайс-листа

Способы получения файла:

  • FTP/SFTP — поставщик выкладывает файл на сервер, скрипт скачивает по расписанию. Используется ftp_connect() или библиотека phpseclib.
  • HTTP ссылка — file_get_contents() или curl. Некоторые поставщики требуют авторизацию — HTTP Basic или cookie-сессию.
  • Email — письмо с вложением. Парсер подключается к IMAP-ящику (imap_open()), ищет письма от поставщика, скачивает вложение.
  • Telegram-бот поставщика — редко, но встречается: забирать файл через Telegram Bot API.

Обновление цен и остатков в 1С-Битрикс

После парсинга файла данные нужно внести в каталог. Ключевой идентификатор — артикул (ARTICLE или XML_ID в инфоблоке). Официальная документация: D7 API для цен

Обновление цены:

\Bitrix\Catalog\PriceTable::update($priceId, [
    'PRICE' => $newPrice,
    'CURRENCY' => 'RUB',
]);
// или массовое через CCatalogProduct::SetOptimalPrice()

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

\Bitrix\Catalog\StoreProductTable::update($storeProductId, [
    'AMOUNT' => $newAmount,
]);
// или если работаете без складов:
CCatalogProduct::Update($productId, ['QUANTITY' => $newQty]);

Поиск товара по артикулу:

$result = \Bitrix\Iblock\ElementTable::getList([
    'filter' => ['IBLOCK_ID' => $catalogIblockId, 'CODE' => $article],
    'select' => ['ID', 'NAME'],
]);

Если артикул не найден — логировать как неопознанный товар (не создавать автоматически, это риск мусора в каталоге).

Как настроить систему импорта: пошагово

  1. Анализ прайса поставщика. Определяем структуру, формат, разделители. Собираем образцы файлов.
  2. Настройка маппинга. Создаём конфигурацию: колонка артикула, цены, остатка. Указываем правила преобразования (умножение, префикс).
  3. Интеграция получения файла. Настраиваем FTP, email или HTTP. Тестируем скачивание.
  4. Тестирование импорта. Запускаем на тестовом каталоге. Проверяем точность обновлений (целевая — 99.5%).
  5. Деплой и мониторинг. Разворачиваем на боевом сервере, настраиваем уведомления об ошибках.

Логирование и контроль качества

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

  • Количество строк в файле.
  • Количество обновлённых товаров.
  • Количество не найденных артикулов (с перечнем).
  • Ошибки чтения файла.
  • Время выполнения.

Лог хранится в инфоблоке "Журнал импорта" или в отдельной таблице. Уведомление на email администратора при ненулевом количестве ошибок. При обработке 50000 позиций мы обеспечиваем точность до 99.5%.

Производительность при больших прайсах

Прайс-лист на 50000 позиций при наивном подходе (запрос к БД на каждую строку) будет обрабатываться часами. Правильная стратегия:

  1. Пакетное чтение: читать Excel блоками по 1000 строк, не загружать весь файл в память.
  2. Кэш артикулов: перед импортом загрузить все существующие артикулы в массив ['ARTICLE' => 'BITRIX_ID']. Поиск по массиву в памяти вместо запроса к БД на каждую позицию.
  3. Массовые обновления: вместо UPDATE на каждую строку — использовать транзакцию или пакетный API.

Благодаря этим методам импорт 50000 позиций занимает менее 5 минут — ускорение в 10 раз по сравнению с построчной обработкой.

Что входит в работу

  • Анализ формата и структуры прайс-листа поставщика.
  • Разработка парсера с настраиваемым маппингом.
  • Интеграция с каталогом 1С-Битрикс (обновление цен, остатков, свойств).
  • Настройка получения файла (FTP, email, HTTP).
  • Система логирования и уведомлений об ошибках.
  • Документация и инструкция по добавлению новых поставщиков.
  • Обучение администратора и поддержка в течение месяца.

Сроки разработки

Масштаб Состав Срок
Один поставщик, Excel/CSV Парсер + импорт цен и остатков 2-3 дня
Несколько поставщиков Конфигурируемая система маппинга 4-6 дней
Полная система Все форматы, UI управления поставщиками, логи 7-10 дней

За нашими плечами более 100 проектов. Оценим ваш случай — свяжитесь с нами, и мы предложим решение под ключ с гарантией результата. Получите консультацию инженера уже сегодня.