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