Настройка автоматического обновления цен поставщиков при дропшиппинге 1С-Битрикс
Мы настраиваем систему автоматической синхронизации прайсов поставщиков с каталогом Битрикс для дропшиппинг-магазинов. Ежедневная синхронизация прайсов должна отработать незаметно: цены обновились, маржа пересчиталась, товары с нулевым остатком ушли в «нет в наличии». Если этого не происходит — магазин продаёт по устаревшим ценам и получает убытки или споры с покупателями.
Наша команда за 8 лет работы с Битрикс реализовала более 25 интеграций с прайсами поставщиков. Работаем с любыми форматами: CSV, Excel, XML, CommerceML, JSON через API. Каждая интеграция включает автоматическое обновление цен, остатков, категорий и картинок с учётом наценки, скидок и правил маржинальности. Экономия времени менеджера — 15–20 часов в неделю. Гарантируем точность данных и стабильную работу под нагрузкой.
Форматы прайсов поставщиков
Поставщики отдают прайсы в нескольких форматах: CSV, Excel (.xlsx), XML (в том числе CommerceML), JSON через API. Каждый формат требует своего парсера. В Битриксе для XML/CommerceML есть стандартный импорт через «1С → Обмен с 1С», но он рассчитан на ручной запуск и полный импорт, а не на инкрементальное обновление цен.
Для автоматизации нужен кастомный компонент обновления. Структура:
/local/modules/vendor.priceimport/ ├── lib/ │ ├── Parser/ │ │ ├── CsvParser.php │ │ ├── XlsxParser.php │ │ └── XmlParser.php │ ├── PriceUpdater.php │ └── StockUpdater.php └── install/ └── index.php Импорт CSV: парсинг и маппинг
CSV поставщика содержит артикул, цену закупки, остаток. Маппинг на поля Битрикса — через конфигурационный файл, чтобы при смене формата поставщика не переписывать логику:
// config/vendor_a.php return [ 'delimiter' => ';', 'encoding' => 'windows-1251', 'skip_rows' => 1, // Заголовок 'columns' => [ 'sku' => 0, // Артикул — первая колонка 'price' => 3, // Цена — четвёртая 'stock' => 5, // Остаток — шестая ], 'price_type' => 2, // ID типа цены в b_catalog_price 'markup' => 1.25, // Наценка 25% ]; Парсер:
class CsvParser { public function parse(string $filePath, array $config): \Generator { $file = new \SplFileObject($filePath); $file->setFlags(\SplFileObject::READ_CSV | \SplFileObject::SKIP_EMPTY); $file->setCsvControl($config['delimiter']); $row = 0; foreach ($file as $line) { if ($row++ < $config['skip_rows']) continue; yield [ 'sku' => trim($line[$config['columns']['sku']]), 'price' => (float)str_replace(',', '.', $line[$config['columns']['price']]), 'stock' => (int)$line[$config['columns']['stock']], ]; } } } Генератор (yield) обязателен при файлах от 50MB — позволяет не загружать весь файл в память.
Обновление цен в таблице b_catalog_price
Маппинг артикула на элемент инфоблока — через свойство ARTICLE или XML_ID:
class PriceUpdater { public function updateFromParsed(iterable $rows, array $config): array { $stats = ['updated' => 0, 'not_found' => 0]; foreach ($rows as $row) { // Найти элемент по артикулу $el = \CIBlockElement::GetList( [], ['PROPERTY_ARTICLE' => $row['sku'], 'IBLOCK_ID' => CATALOG_IBLOCK_ID], false, ['nTopCount' => 1], ['ID'] )->Fetch(); if (!$el) { $stats['not_found']++; continue; } $newPrice = round($row['price'] * $config['markup'], 2); \CPrice::SetBasePrice($el['ID'], $newPrice, 'RUB', $config['price_type']); $stats['updated']++; } return $stats; } } CPrice::SetBasePrice() делает INSERT или UPDATE в b_catalog_price — правильный инструмент для единичных обновлений. При массовом обновлении (10 000+ позиций) быстрее прямой SQL через временную таблицу с последующим UPDATE ... FROM.
Расписание через агенты Битрикса
Агент запускает обновление раз в 4 часа:
\CAgent::AddAgent( 'VendorPriceImport::run();', 'vendor.priceimport', 'N', // Не разовый 14400, // Интервал 4 часа '', 'Y', date(DATE_FORMAT, time() + 14400) ); Метод run() скачивает прайс с FTP/HTTP поставщика, парсит, обновляет цены и остатки, пишет лог в b_event_log. При ошибке — отправляет письмо администратору через CEvent::Send().
Детальное описание процесса
Интеграция требует тщательного планирования и анализа текущих процессов в вашей компании. Мы проводим аудит существующих систем, определяем точки интеграции и возможные конфликты. На каждом этапе предоставляем подробную документацию и проводим тестирование на staging-среде перед запуском в production. Наши решения разработаны с учётом лучших практик индустрии и позволяют значительно снизить операционные затраты.
Наша гарантия качества
Мы берём на себя полную ответственность за качество выполненной работы. В течение 12 месяцев после завершения проекта исправляем любые обнаруженные проблемы абсолютно бесплатно. Техническая поддержка включает консультации, обучение вашей команды и помощь при возникновении вопросов. Каждый проект завершается итоговым отчётом с описанием реализованного функционала, рекомендациями по оптимизации и планом развития системы.
Примеры успешных проектов
За время работы мы реализовали интеграции для компаний разного размера: от небольших интернет-магазинов до крупных оптовых дистрибьюторов. Каждый проект требовал индивидуального подхода, и мы гордимся результатом, который значительно улучшил эффективность работы наших клиентов.
Преимущества нашего подхода
Мы обеспечиваем комплексное решение, а не отдельные исправления. Каждый проект включает документирование, тестирование и обучение команды. Нашим клиентам нравится, что мы не просто выполняем работу, но и объясняем каждый шаг процесса, давая возможность вашей команде в будущем самостоятельно поддерживать систему. Со своей стороны, мы гарантируем помощь в течение года после завершения проекта.
Контакты и следующие шаги
Если ваша компания столкнулась с описанной проблемой, свяжитесь с нами для бесплатной консультации. Проведём анализ вашей системы и предложим оптимальное решение. Стоимость проекта зависит от сложности и объёма работ, но для типовых решений мы всегда предоставляем точную смету на основе предварительного анализа требований.
Мониторинг и техническая поддержка
После запуска система обновления цен требует регулярного мониторинга. Мы настраиваем алерты о сбоях синхронизации, автоматические отчёты по обновлённым товарам, статистику по каждому поставщику. Это позволяет менеджерам оперативно реагировать на изменения и минимизировать простои. В рамках технической поддержки исправляем изменения форматов прайсов поставщиков, добавляем новых поставщиков и расширяем правила обработки данных.







