БесплатноБесплатный аудит сайта и кода на 1С-Битрикс при заказе доработки или поддержки

Импорт прайс-листов поставщиков: форматы и сопоставление

Импорт прайс-листов поставщиков в каталог на 1С-Битрикс: форматы, сопоставление, наценка

У вас пять поставщиков, и каждый присылает прайс по-своему: один — Excel с объединёнными ячейками и логотипом в шапке, второй — CSV в кодировке из прошлого века, третий — XML со своей структурой. Цены и остатки в них меняются каждый день, а менеджер по полдня вручную переносит числа в каталог, ошибается и не успевает. Знакомая картина — и она напрямую бьёт по обороту: витрина с устаревшими ценами и остатками теряет заказы и репутацию.

В этой статье разберём, как настроить импорт прайс-листов поставщиков в интернет-магазин на 1С-Битрикс: какие бывают форматы, как сопоставлять колонки и товары, накручивать наценку по группам клиентов, обновлять цены и остатки, не затирая свой контент, и не ронять сайт кривым файлом. Это инженерная тема, и делаем мы её в рамках автоматизации на 1С.

Коротко

  • Не требуйте от поставщиков один формат — стройте гибкий импорт с настраиваемым сопоставлением колонок под каждого.
  • Сопоставляйте товары по стабильному коду (артикул, штрихкод), а не по названию, и храните таблицу соответствий.
  • Закупочную цену прогоняйте через правила наценки в цены продажи по группам клиентов, не кладите в витрину напрямую.
  • Обновляйте только цену и остаток, защищайте свой контент, валидируйте файл и ведите лог каждого запуска.

Почему импорт прайсов — это боль

Импорт прайсов сложен не технически, а из-за хаоса на входе. У каждого поставщика свой формат, своя структура, свои единицы измерения и свои представления о том, как назвать колонку с ценой. Нет стандарта, которому все следуют, — есть десятки разных файлов, которые нужно свести к единой витрине.

Сложность умножается на регулярность: прайс — не разовая загрузка, а ежедневный процесс. Цены меняются, остатки скачут, появляются новые позиции и исчезают старые. Ручной перенос при таком темпе невозможен физически: менеджер либо не успевает, либо ошибается, и витрина расходится с реальностью. Покупатель заказывает то, чего нет, или по старой цене — и это прямые убытки и негатив.

Поэтому импорт прайсов почти всегда автоматизируют. Но автоматизировать хаос нельзя — сначала его нужно причесать: договориться о ключах сопоставления, построить маппинг под каждого поставщика и обложить процесс валидацией. Об этом и пойдёт речь.

Форматы прайсов: Excel, CSV, XML

Прайсы приходят в трёх основных форматах, и у каждого своя специфика при разборе.

ФорматПлюсыСложности
Excel (XLS/XLSX)Привычен поставщикам, распространёнОбъединённые ячейки, шапки, несколько листов, форматирование
CSVПростой, легко парситьКодировки, разделители, экранирование, дробные числа
XMLСтруктурирован, машиночитаемРазные схемы, вложенность, объём

На практике вы не выбираете формат — его диктует поставщик. Чаще всего это Excel произвольной структуры, самый неудобный для машины вариант: логотипы в шапке, объединённые ячейки, товары вперемешку с заголовками разделов. Задача импорта — уметь читать всё это и извлекать полезные строки.

Отдельная головная боль — кодировки и числа. CSV в Windows-кодировке превращает кириллицу в мусор, если не распознать её; запятая как десятичный разделитель ломает парсинг цен. Всё это обрабатывается на этапе чтения, до того как данные попадут в каталог.

Оптовое ценообразование по группам Группа клиентадилер / оптГруппа ценсвой прайсЦена клиентаиндивидуальнаяЗаказ и отгрузкапо своей цене
Схема: клиент попадает в свою группу, ей соответствует своя группа цен — и заказ оформляется по индивидуальной цене. Один каталог, разные цены для разных клиентов.

Сопоставление колонок: маппинг под поставщика

Первый шаг после чтения файла — понять, где что. У одного поставщика цена в колонке «Опт», у другого — «Цена руб», у третьего колонок с ценами три. Артикул может называться «Код», «Артикул», «SKU» или вообще не иметь заголовка. Требовать единообразия бесполезно — нужно настраиваемое сопоставление колонок.

Маппинг — это правило «в файле поставщика X колонка N — это цена, колонка M — артикул, колонка K — остаток». Его настраивают один раз под каждого поставщика и переиспользуют при каждом импорте:

Гибкий маппинг — сердце хорошего импорта. Именно он позволяет подключить нового поставщика за настройку профиля, а не за переписывание кода. Без него каждый новый прайс превращается в отдельную разработку.

Сопоставление товаров: по какому ключу

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

Никогда не сопоставляйте по названию. «Дрель ударная 750Вт» у поставщика и «Дрель ударная, 750 Вт (синяя)» у вас — один товар, но строки разные. Название пишут как попало, поэтому ключом оно быть не может. Нужен стабильный код.

Пригодные ключи, по надёжности:

Для каждого поставщика ведут таблицу соответствия «его код → ваш товар». Она накапливается: один раз сопоставленная позиция дальше матчится автоматически. Новые, ещё не привязанные строки прайса выводят на ручное сопоставление — менеджер один раз связывает их с товаром или заводит новую карточку, и дальше они идут автоматом. Это ключевой механизм: он превращает разовый героизм в управляемый процесс.

Наценка и цены по группам клиентов

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

Поэтому между прайсом и витриной стоит слой наценки:

  1. Получите закупочную цену. Она приходит из прайса и хранится как внутренняя, невидимая покупателю.
  2. Примените правила наценки. Процент или сумма наценки — общий, по категории, бренду или конкретному поставщику.
  3. Сформируйте типы цен. На основе закупочной и наценки считаются цены для групп клиентов через типы цен и группы пользователей.
  4. Округлите красиво. Цены приводятся к «маркетинговому» виду (999 вместо 1003) по заданным правилам.

Так закупочная цена остаётся вашей внутренней информацией, а покупатель каждой группы видит корректную цену. Механика типов цен и групп в 1С-Битрикс — штатная, но правила наценки поверх неё обычно кастомные под бизнес. Это уже соприкасается с логикой B2B-каталога, где у каждой группы своя цена, — и с автоматизацией продаж в целом.

Что обновлять, а что защитить

Импорт — это обновление, и здесь легко навредить. Из прайса приходят цена и остаток, но карточка товара содержит гораздо больше: описание, фото, характеристики, SEO-тексты, которые вы наполняли вручную. Если импорт затрёт их данными поставщика (а у поставщика описания либо нет, либо оно куцее), вы потеряете весь контент.

Поэтому обработчик импорта должен явно разделять поля:

Это правило спасает от классической катастрофы, когда очередной ночной импорт обнуляет вручную наполненные карточки. Разделение «обновляем / защищаем» задаётся в обработчике явно и проверяется на тесте до боевого запуска.

Валидация: не сломать сайт кривым файлом

Прайс приходит извне, а значит, ему нельзя доверять. Поставщик может прислать файл в другой кодировке, с пустыми ценами, с остатками-заглушками или с ценами, случайно уменьшенными в десять раз. Без валидации такой файл заливается в витрину и ломает её — покупатели видят цену «0» или «в десять раз дешевле».

Валидация до записи проверяет:

Подозрительный импорт — например, где средняя цена вдруг упала в разы, — обработчик должен не заливать молча, а отклонять или ставить на подтверждение оператором. Лучше задержать обновление на час, чем на этот час показывать покупателям сломанные цены. Как выстраивать безопасную обработку внешних данных и не завязать на ней стабильность сайта, мы разбираем в статье про REST, вебхуки и безопасность в Битрикс.

Пропавшие позиции и снятие с продажи

Отдельный вопрос — что делать с товарами, которые были в прошлом прайсе, но исчезли из нового. Обычно это значит, что позиции нет в наличии или поставщик снял её с продажи.

Соблазн — удалить такие товары, но это ошибка. Удаление ломает внешние и внутренние ссылки, теряет наработанные позиции в поиске и историю. Правильно — пометить позицию «нет в наличии» и снять с продажи, сохранив карточку:

Такой подход бережёт SEO и не создаёт битых ссылок, а массовое исчезновение товаров превращает из катастрофы в контролируемое событие.

Расписание, агенты и фоновая обработка

Импорт — регулярный процесс, и запускать его руками не нужно. В 1С-Битрикс это делают через агенты или системный крон по расписанию.

Несколько принципов надёжного расписания:

Крон надёжнее агентов на хитах для тяжёлых регулярных задач, потому что не зависит от посещаемости сайта. Стабильность таких фоновых процессов сильно зависит от инфраструктуры — как её настроить под нагрузку, мы описываем в материале про хостинг и инфраструктуру BitrixVM.

Реализация импорта в 1С-Битрикс

Технически импорт прайсов ложится на инфоблоки и торговый каталог, а обработчик пишут на современном ядре D7. Общая архитектура такая:

  1. Приём файла. Прайс забирается из почты, с FTP или по ссылке и складывается в очередь на обработку.
  2. Чтение и маппинг. Файл читается по формату, колонки сопоставляются по профилю поставщика, мусорные строки отсеиваются.
  3. Сопоставление товаров. Строки матчатся с товарами по ключу через таблицу соответствий; несопоставленное — в очередь на ручную привязку.
  4. Наценка и цены. Закупочная цена прогоняется через правила наценки в типы цен для групп клиентов.
  5. Запись с защитой полей. Обновляются только цена и остаток, контент защищён; отсутствующие позиции скрываются.
  6. Сброс кэша. После записи инвалидируется кэш каталога, чтобы витрина показала новые цены и остатки.

Работу с данными эффективнее строить на D7 ORM — это быстрее и безопаснее прямых запросов; подробно об этом в статье про D7 ORM в Битрикс. А чтобы такой обработчик выкатывался на прод контролируемо и без риска уронить боевой импорт, процесс выстраивают по CI/CD и деплою на Битрикс.

Логи, ошибки и контроль импорта

Автоматический импорт нельзя запустить и забыть — он работает с изменчивыми внешними данными, и что-то обязательно пойдёт не так. Спасает подробное логирование и контроль.

Хороший лог превращает импорт из чёрного ящика в управляемый процесс: видно, что каждый поставщик обновился вовремя, а сбои всплывают сразу, а не через неделю жалоб покупателей на неверные цены.

Частые ошибки импорта прайсов

Чек-лист настройки импорта

  1. Форматы разобраны. Импорт читает Excel, CSV и XML ваших поставщиков с учётом кодировок и структуры.
  2. Маппинг настраиваемый. Для каждого поставщика есть профиль сопоставления колонок, новый подключается настройкой.
  3. Ключ сопоставления надёжный. Товары матчатся по штрихкоду или коду, а не по названию; есть таблица соответствий.
  4. Наценка настроена. Закупочная цена превращается в цены продажи по группам клиентов, остаётся внутренней.
  5. Поля разделены. Обновляются только цена и остаток, контент и SEO защищены от перезаписи.
  6. Валидация работает. Кодировка, обязательные колонки и адекватность цен/остатков проверяются до записи.
  7. Пропавшее скрывается. Исчезнувшие из прайса товары помечаются «нет в наличии», а не удаляются.
  8. Расписание и логи. Импорт идёт по крону в фоне, каждый запуск логируется, сбои уведомляют.

Вывод

Импорт прайс-листов — это не разовая загрузка, а постоянный процесс сведения хаоса поставщиков к единой актуальной витрине. Его нельзя делать вручную и нельзя автоматизировать наивно: нужен гибкий маппинг колонок, надёжное сопоставление товаров по коду, слой наценки под группы клиентов и защита вашего контента от перезаписи.

Обложите импорт валидацией и логами, скрывайте пропавшие позиции вместо удаления, гоняйте тяжёлые файлы в фоне по расписанию — и каталог всегда будет с актуальными ценами и остатками без ручного труда. Это освобождает менеджеров и убирает целый класс ошибок, которые стоят заказов. Настроить такой импорт под ваших поставщиков поможет автоматизация на 1С, а привести в порядок уже существующий обмен — аудит и оптимизация 1С.

Частые вопросы

В каком формате лучше принимать прайсы от поставщиков?

Идеально — структурированный XML или CSV с фиксированными колонками, потому что их проще парсить и валидировать. Но на практике поставщики чаще присылают Excel произвольной структуры, и с этим приходится работать. Правильный подход — не требовать от всех один формат, а построить гибкий импорт с настраиваемым сопоставлением колонок под каждого поставщика.

Как сопоставить товары поставщика с товарами на сайте?

Ключ сопоставления — стабильный идентификатор: артикул поставщика, код производителя или штрихкод. Название для сопоставления не годится, потому что его пишут по-разному. Для каждого поставщика заводят таблицу соответствия «его код → ваш товар», которая накапливается и переиспользуется. Новые, ещё не сопоставленные позиции выводят на ручную привязку.

Можно ли обойтись штатным импортом 1С-Битрикс?

Штатный импорт CSV в инфоблоки покрывает простые случаи с фиксированной структурой файла. Но прайсы поставщиков обычно разношёрстные: разные колонки, единицы, кодировки, несколько цен. Под такое обычно делают отдельный обработчик импорта на D7 с настраиваемым маппингом, валидацией и логом, а штатный механизм оставляют для простых регулярных выгрузок.

Как обновлять цены и остатки, не затирая свои данные?

Импорт должен обновлять только те поля, которые приходят из прайса (обычно цена и остаток), и не трогать ваш контент — описания, фото, SEO. Для этого в обработчике явно указывают, какие поля обновляются, а какие защищены. Иначе очередной импорт затрёт вручную наполненные карточки данными поставщика.

Что делать с наценкой и разными ценами для групп клиентов?

Из прайса приходит закупочная цена, а на сайте нужны цены продажи, часто разные для групп клиентов. Поэтому импорт не кладёт цену поставщика напрямую в витрину, а прогоняет её через правила наценки (по категории, бренду, поставщику), формируя типы цен для групп. Так закупочная цена остаётся внутренней, а покупатель видит корректную розничную или оптовую.

Как часто запускать импорт прайсов?

Зависит от того, как часто поставщик обновляет данные и насколько критична актуальность остатков. Цены обычно обновляют раз в сутки, остатки — чаще, вплоть до нескольких раз в день, если поставщик отдаёт их оперативно. Импорт ставят на агент или крон по расписанию, а тяжёлые файлы обрабатывают в фоне, чтобы не нагружать сайт в пик.

Что делать с товарами, которые пропали из прайса?

Пропажа позиции из прайса обычно означает, что её нет в наличии или поставщик снял её с продажи. Правильно не удалять такой товар, а помечать «нет в наличии» и убирать из продажи, сохранив карточку и её SEO. Полное удаление ломает ссылки и теряет наработанные позиции в поиске; скрытие обратимо и безопасно.

Как не сломать сайт кривым прайсом?

Каждый импорт должен проходить валидацию до записи: проверку кодировки, обязательных колонок, адекватности цен и остатков (не ноль вместо цены, не отрицательные числа). Подозрительные файлы — например, где цены внезапно упали в десять раз — импорт должен отклонять или ставить на подтверждение, а не молча заливать в витрину. И обязательно вести лог каждого запуска.

Поделиться:

Прайсы поставщиков съедают время менеджеров?

Настроим гибкий импорт с сопоставлением товаров, наценкой по группам и защитой контента. Рассчитаем работу по вашим поставщикам.

Автоматизация на 1С

Редакция B2Bsite

Команда B2Bsite. С 2014 года разрабатываем интернет-магазины и порталы на 1С-Битрикс: настраиваем импорт прайсов, обмен с 1С и наполнение каталога для среднего и крупного бизнеса.

← Все статьи блога