Оптовая компания перепродаёт товары двадцати поставщиков. У каждого свой прайс в Excel: со своими колонками, своими артикулами, своей структурой — и всё это меняется каждую неделю, а остатки и вовсе каждый день. Пока поставщиков было двое, менеджер обновлял цены руками. Теперь на это уходит весь рабочий день, цены всё равно устаревают, а клиенты заказывают то, чего уже нет. Ручной труд перестал масштабироваться — нужна автоматическая интеграция прайсов.
В этой статье разберём, как интегрировать B2B-каталог на 1С-Битрикс с прайс-листами поставщиков: какие бывают форматы, как настроить маппинг колонок и сопоставление товаров, как считать наценки и цены по группам, что делать с остатками, дублями и исчезнувшими позициями и как автоматизировать регулярное обновление. Практически это часть автоматизации на 1С, где загрузка и обработка прайсов встроены в общий процесс.
Коротко
- Ручное обновление прайсов не масштабируется: на многих поставщиках цены устаревают, а остатки расходятся.
- У каждого поставщика свой формат — под каждого настраивают отдельный разбор и маппинг колонок.
- Сопоставление товаров идёт по ключу (артикул поставщика), несопоставленное уходит на ручную обработку.
- Цена продажи формируется наценкой; закупочные цены не видны клиентам, на витрину идёт цена по группе.
Проблема множества поставщиков
Дистрибьюторская модель опта строится на перепродаже: компания агрегирует товары многих поставщиков в единый каталог и продаёт клиентам. Чем больше поставщиков, тем шире ассортимент — но тем тяжелее держать данные в актуальном состоянии. Каждый поставщик присылает свой прайс со своими ценами и остатками, и всё это живёт по своему расписанию.
Ручное обновление здесь обречено: тысячи позиций, десятки файлов, постоянные изменения. Результат ручного труда — устаревшие цены (продаём в убыток или отпугиваем ценой), расхождение остатков (продаём отсутствующее), ошибки при переносе. Автоматическая интеграция прайсов решает это в корне: данные обновляются сами, а люди занимаются исключениями, а не рутиной.
Форматы прайс-листов
Первое, с чем сталкиваешься, — разнообразие форматов. Универсального «прайса» не существует, у каждого поставщика он свой.
| Формат | Особенности | Сложность разбора |
|---|---|---|
| Excel (xlsx/xls) | Самый частый, произвольная структура | Средняя: разные колонки, шапки, объединённые ячейки |
| CSV | Проще Excel, но проблемы кодировок и разделителей | Низкая-средняя |
| XML / YML | Структурированный, часто для маркетплейсов | Низкая при валидной схеме |
| API поставщика | Прямой доступ к актуальным данным | Разная, зависит от API |
Чаще всего это Excel произвольной структуры. Под каждый источник настраивают свой разбор: где шапка, какие колонки за что отвечают, как читать единицы и кодировку. Это и есть основная работа интеграции — не «загрузить файл», а понять и нормализовать данные каждого поставщика.
Маппинг колонок и полей
Маппинг — это правила соответствия между колонками прайса и полями товара в каталоге. У одного поставщика цена в колонке «Опт», у другого — «Цена руб», у третьего вообще без заголовка. Задача маппинга — привести этот хаос к единой структуре.
- Идентификатор. Какая колонка содержит артикул/код для сопоставления.
- Цена. Какая колонка — закупочная цена, в какой валюте и единице.
- Остаток. Где количество на складе поставщика (число, «в наличии», «под заказ»).
- Название и категория. Для новых позиций и проверки соответствия.
- Единицы и кратность. Как поставщик считает товар (штуки, упаковки, метры).
Маппинг настраивается один раз на поставщика и переиспользуется при каждой загрузке его прайса. Когда поставщик меняет структуру файла, маппинг обновляют. Хорошая интеграция позволяет задавать маппинг гибко, без переписывания кода под каждого.
Сопоставление товаров по ключу
После разбора прайса каждую его строку нужно связать с товаром в каталоге. Это сопоставление идёт по уникальному ключу — обычно по артикулу поставщика или коду производителя.
Сложность в том, что коды несовершенны: у разных поставщиков они разные, могут дублироваться или отсутствовать. Поэтому заводят таблицу соответствия — какой код поставщика какому товару сайта отвечает. Это позволяет один товар в каталоге связать с кодами нескольких поставщиков.
Качественное сопоставление напрямую зависит от порядка с артикулами. Как выстроить точный поиск и работу по кодам, мы разбираем в материалах по каталогу — стабильные коды упрощают и поиск, и интеграцию прайсов.
Наценки и цены по группам
Из прайса приходит закупочная цена, а на витрину должна выйти цена продажи. Между ними — наценка. Логику наценки задают правилами, чтобы при каждом обновлении прайса цены пересчитывались автоматически.
- Уровни наценки. Общая, по категориям, по поставщикам или по отдельным товарам — от общего к частному.
- Цены по группам клиентов. Дилер, опт, розница — у каждой группы своя итоговая цена от одной закупочной.
- Округление. Приведение расчётной цены к «красивым» значениям по правилам.
- Спеццены. Индивидуальные условия для конкретных клиентов поверх общих правил.
Критически важно: закупочные цены поставщика не должны быть видны клиентам. На витрину выходит только итоговая цена продажи для группы авторизованного клиента. Механику цен по группам в B2B мы подробно разбираем в блоке материалов по опту — она напрямую стыкуется с наценкой на прайсы.
Остатки и наличие
Остатки — самая «скоропортящаяся» часть прайса. Товар, показанный в наличии, но отсутствующий у поставщика, — это сорванный заказ и недовольный оптовый клиент. Поэтому остатки обновляют чаще всего, иногда несколько раз в день.
При загрузке остатков решают несколько вопросов: как трактовать значения («10», «в наличии», «под заказ», «много»), нужно ли показывать точное количество или градацию (есть/мало/нет), учитывать ли срок поставки для позиций «под заказ». Для B2B часто важнее не точная цифра, а достоверный статус наличия и срок, откуда отгрузят. Актуальные остатки — основа доверия опта к каталогу.
Один товар у нескольких поставщиков
В агрегированном каталоге один и тот же товар нередко есть у нескольких поставщиков — с разной ценой и наличием. Это надо решать явно, иначе возникает путаница с ценой и остатком одной карточки.
- Приоритет поставщиков. Для товара задаётся порядок: закупаем у приоритетного, при отсутствии — у следующего.
- Правило цены. Итоговая цена берётся по приоритетному поставщику или как минимальная — по заданной логике.
- Правило остатка. Остаток суммируется по поставщикам или берётся по основному — в зависимости от модели закупки.
- Автопереключение. Если у приоритетного товар кончился, источник автоматически переключается на следующего.
Логику выбора источника закладывают заранее и делают прозрачной. Без неё каталог показывает то цену одного поставщика, то остаток другого, и данные противоречат сами себе.
Исчезнувшие и новые позиции
Каждая загрузка прайса — это не только обновление, но и появление/исчезновение позиций. Оба сценария требуют явных правил.
- Исчезнувшие товары. Позиция пропала из свежего прайса — нельзя оставлять её «в наличии». Обычно обнуляют остаток, скрывают или уводят в архив, но не удаляют сразу, чтобы сохранить карточку, отзывы и SEO.
- Новые товары. Появившиеся в прайсе позиции заводят как черновики или в отдельный статус для дообработки контент-менеджером — с описанием, фото, характеристиками.
- Осторожность с автопубликацией. Прайсы бедны контентом; автопубликация «как есть» заполняет каталог пустыми карточками, что вредит продажам и поиску.
Правила обработки исчезнувших и новых позиций настраивают заранее. Это отличает управляемую интеграцию от «загрузчика», который то удаляет нужное, то плодит пустые карточки.
Автоматизация обновления в Битрикс
Чтобы прайсы обновлялись без человека, загрузку ставят на автоматические задания. В 1С-Битрикс за это отвечают агенты (плановые задачи) или внешние задания по расписанию, которые забирают свежие файлы (из папки, почты, по ссылке или через API поставщика), разбирают их по настроенному маппингу и обновляют каталог.
Практичная схема разделяет частоту: остатки обновляются чаще, полные прайсы с ценами — по расписанию или по мере поступления новых файлов. Тяжёлые загрузки выполняют пакетно, чтобы не нагружать сайт. Как устроены плановые задания, обмен и работа с данными, мы разбираем в статьях про D7 и ORM и про разработку модулей Битрикс — загрузчик прайсов удобно оформлять как собственный модуль с гибкими настройками.
Надёжность и контроль загрузок
Автоматическая загрузка прайсов должна быть защищена от «мусорных» данных. Битый файл, сдвинутая колонка или нулевые цены могут в одно обновление обвалить весь каталог. Поэтому загрузку страхуют проверками.
- Валидация файла. Проверка формата, наличия ожидаемых колонок и адекватности данных перед применением.
- Защита от аномалий. Если цены или остатки массово «обнулились» или скакнули — загрузка приостанавливается для проверки.
- Логирование загрузок. Что, когда, от кого и с каким результатом обновилось — для разбора проблем.
- Уведомления и отчёт. Сообщение об ошибках и список несопоставленных позиций после каждой загрузки.
Эти предохранители превращают загрузку прайсов из «рулетки» в управляемый процесс. Без них одна кривая выгрузка поставщика способна испортить витрину и продажи на весь день.
Частые ошибки
- Один загрузчик на всех. Попытка читать любые прайсы одним шаблоном вместо маппинга под каждого поставщика.
- Потеря несопоставленного. Строки без совпадения молча игнорируются — теряются продажи.
- Закупочные цены на витрине. Клиент видит цену поставщика вместо цены продажи по группе.
- Устаревшие остатки. Наличие обновляется редко, продаётся отсутствующий товар.
- Нет логики нескольких поставщиков. Цена и остаток одной карточки противоречат друг другу.
- Удаление исчезнувших товаров. Карточки удаляются сразу, теряются отзывы и SEO.
- Автопубликация новых позиций. Каталог заполняется пустыми карточками без контента.
- Нет защиты от битых файлов. Кривая выгрузка обваливает весь каталог.
Чек-лист внедрения
- Разбор под каждого поставщика. Настроен парсер и маппинг колонок для каждого источника.
- Сопоставление по ключу. Таблица соответствия кодов, несопоставленное уходит на ручную обработку.
- Наценки и цены по группам. Правила наценки пересчитывают цены продажи; закупочные скрыты от клиентов.
- Остатки актуальны. Наличие обновляется часто, статусы и сроки достоверны.
- Несколько поставщиков решены. Заданы приоритет, правила цены и остатка, автопереключение.
- Исчезнувшие и новые под контролем. Пропавшие скрываются/архивируются, новые — в черновики на дообработку.
- Обновление автоматизировано. Загрузка на агентах/расписании, остатки и прайсы по своей частоте.
- Загрузки защищены. Валидация файлов, защита от аномалий, логи и отчёты об ошибках.
Вывод
Интеграция B2B-каталога с прайс-листами поставщиков — это то, что превращает ручной ад дистрибьютора в управляемый процесс. Когда поставщиков много, а прайсы меняются постоянно, ручное обновление перестаёт масштабироваться: цены устаревают, остатки расходятся, продажи срываются. Автоматическая загрузка держит каталог актуальным, а людей освобождает для работы с исключениями.
Ключ к успеху — не «загрузить файл», а продумать логику: свой маппинг под каждого поставщика, сопоставление по стабильным кодам, правила наценок и цен по группам с сокрытием закупочных цен, актуальные остатки, обработку дублей, исчезнувших и новых позиций и защиту от битых выгрузок. Постройте это на 1С-Битрикс как управляемую интеграцию с автообновлением и контролем — и каталог будет продавать актуальный ассортимент без ежедневной ручной рутины.