Розничный покупатель приходит в каталог выбирать: листает, сравнивает, кладёт в корзину пару товаров. Оптовик так не работает. Он знает свою номенклатуру наизусть, у него на руках список артикулов и количеств, и заставлять его открывать каждую карточку по отдельности — значит красть его время. Закупщик, которому нужно завести заказ на 60 позиций, не хочет шестьдесят раз пройти путь «поиск → карточка → выбор → в корзину». Он хочет вставить готовый список и получить собранную корзину. Именно для этого в B2B-магазине на 1С-Битрикс делают быстрый заказ по артикулу и загрузку заказа из Excel.
Эта статья — практический разбор того, как устроен быстрый заказ по артикулу на Битрикс для опта: строка ввода с автодополнением, массовое добавление в корзину списком «артикул;количество», загрузка заказа из Excel и CSV, сопоставление артикулов, проверка кратности и минимальной партии, наличие по складам и персональные цены по группе клиента. Материал из нашей практики разработки сайтов для B2B-компаний — по делу, без обещаний «мгновенного роста продаж».
Коротко
- Быстрый заказ по артикулу — способ набрать корзину не хождением по каталогу, а вводом кодов: строка с автодополнением по артикулу, коду и названию.
- Массовое добавление в корзину — вставка списка «артикул;количество» и оптовый заказ из Excel/CSV собирают десятки позиций одним действием.
- Ключ к доверию — прозрачный разбор: что нашлось, что нет, что скорректировано по кратности и наличию, показывают до подтверждения корзины.
- Артикулы, персональные цены, остатки, кратность и минимальная партия приходят из 1С — сайт применяет их при сборке заказа.
Зачем оптовику быстрый заказ
Разница между розничным и оптовым сценарием заказа фундаментальна, и её важно проговорить, потому что из неё вытекает вся логика быстрого заказа. Розничный покупатель выбирает — он не знает точно, что купит, ему помогают каталог, фильтры, рекомендации и красивые карточки. Оптовик закупает — он уже знает, что берёт, у него есть спецификация, прайс-лист поставщика или собственная учётная таблица с артикулами и остатками. Ему не нужна витрина как инструмент выбора; ему нужен быстрый ввод.
Представьте закупщика дистрибьютора, который еженедельно заказывает у поставщика 50–80 позиций. Через обычный каталог это выглядит так: открыть меню, найти раздел, отфильтровать, зайти в карточку, выбрать вариацию, вписать количество, вернуться, повторить ещё 79 раз. На это уходят десятки минут, и на каждом шаге можно ошибиться разделом или вариацией. Через быстрый заказ по артикулу тот же список набирается за минуту: закупщик вставляет коды и количества, система собирает корзину, показывает, что распозналось, и он оформляет заказ.
Выгода здесь двусторонняя, и назовём её честно, без завышенных обещаний:
- Для дилера — скорость и точность: заказ по своему списку за минуту, без хождения по каталогу и без опечаток в вариациях, сразу по своим ценам.
- Для поставщика — меньше нагрузки на менеджеров, которым иначе присылают заказы в почте или мессенджере и просят «завести вручную», и меньше ошибок при переносе.
- Для обеих сторон — единый корректный заказ: артикулы сопоставлены с реальными товарами, цены актуальны, кратность и наличие проверены до отгрузки, а не после.
При этом быстрый заказ — не замена каталогу, а дополнение к нему. Каталог остаётся нужен: новым партнёрам для знакомства с ассортиментом, для SEO-трафика, для тех позиций, которые дилер выбирает, а не знает заранее. Быстрый заказ закрывает противоположный сценарий — закупку по заранее известному списку. Хороший B2B-магазин даёт оба пути и не навязывает оптовику розничный путь через карточки.
Что такое быстрый заказ по артикулу
Под «быстрым заказом» на практике понимают несколько разных, но родственных инструментов. Полезно сразу разложить их по смыслу, чтобы при постановке задачи вы понимали, что именно вам нужно, а не просили абстрактную «форму быстрого заказа».
| Инструмент | Что это | Когда удобен |
|---|---|---|
| Строка быстрого заказа | Одно поле с автодополнением: ввёл артикул — подставился товар | Добавить несколько известных позиций |
| Таблица быстрого заказа | Несколько строк «артикул + количество» на одной странице | Набрать заказ на 10–30 позиций вручную |
| Вставка списка | Поле, куда вставляют текст «артикул;количество» построчно | Есть готовый список в блокноте или таблице |
| Загрузка из Excel/CSV | Импорт заказа из файла с сопоставлением артикулов | Есть выгрузка из учётной системы дилера |
| Шаблон закупки | Сохранённый список регулярной поставки | Повторяющийся однотипный заказ |
Все они решают одну задачу — собрать корзину по известным кодам, минуя каталог, — но подходят под разный объём и разный источник данных. Небольшой заказ на пять позиций удобнее набрать в строке с автодополнением; заказ на сотню строк логичнее загрузить файлом. Поэтому в развитом B2B-кабинете обычно есть сразу несколько способов, а дилер выбирает подходящий под ситуацию.
Способы быстрого набора заказа
Прежде чем разбирать каждый инструмент подробно, полезно увидеть их как единую воронку. У всех способов быстрого заказа один результат — собранная корзина — и один общий узел — сопоставление артикула с товаром. Различаются они только тем, как дилер вводит данные: по одной позиции, списком или файлом.
Логически это выглядит так: на входе — источник данных (ручной ввод, вставленный текст, загруженный файл), в середине — единый механизм сопоставления и проверок (артикул → товар, цена, наличие, кратность), на выходе — корзина и отчёт о разборе. Такое единство важно и для проектирования: не нужно писать три разные проверки кратности для трёх инструментов — логику сопоставления и валидации делают общей, а «фронт» ввода — разным.
Из этого следует практичный порядок внедрения. Сначала строят надёжное ядро сопоставления и проверок, потом «навешивают» на него интерфейсы: строку с автодополнением, поле вставки списка, загрузку файла, шаблоны. Если начать с интерфейсов и в каждом городить свою логику, получится три расходящихся поведения — в строке кратность округляется так, а в загрузке иначе, — и дилер запутается. Единое ядро — залог того, что все пути дают одинаковый и предсказуемый результат.
Строка быстрого заказа с автодополнением
Самый простой и самый частый инструмент — строка быстрого заказа. Дилер начинает вводить артикул, код или часть названия, и система в реальном времени показывает подходящие товары: код, наименование, цену его группы, иногда наличие. Он выбирает нужный, ставит количество — позиция уходит в корзину. Для добора нескольких известных позиций это в разы быстрее, чем каталог.
Что делает строку быстрого заказа удобной именно для B2B:
- Автодополнение по нескольким полям. Дилер может не помнить точный артикул и ввести часть названия или внутренний код — подсказка должна находить товар по любому из этих полей.
- Показ цены и наличия в подсказке. Ещё до добавления партнёр видит свою цену и остаток — это экономит переходы и сразу отсекает недоступные позиции.
- Мгновенная реакция. Подсказки подгружаются через AJAX без перезагрузки страницы, чтобы ввод шёл потоком, а не с задержками.
- Клавиатурная работа. Закупщик набирает заказ с клавиатуры: ввёл код, Enter, количество, Enter — без мыши. Для скорости это критично.
- Устойчивость к вариациям. Если у товара есть торговые предложения (размеры, цвета, фасовки), строка должна вести к конкретному SKU, а не к «родителю» без выбора.
Тонкий момент — что именно считать совпадением. Артикул обычно ищут точным или префиксным совпадением, а название — по вхождению слов. Если смешать всё в один нечёткий поиск, подсказки замусорятся: на запрос «100» выпадут и артикул A-100, и все товары со «100» в названии. Поэтому приоритет отдают точному совпадению по артикулу, а поиск по названию идёт ниже. Логику распознавания кодов и приоритетов мы подробно разбираем в статье про поиск по артикулу для B2B-каталога — здесь важно, как этот поиск проявляется именно в быстром заказе.
Поиск по артикулу, коду и названию
Автодополнение в быстром заказе держится на поиске, и от его качества зависит всё. Если строка не находит товар по коду, которым дилер привык оперировать, инструмент бесполезен — партнёр вернётся к почте и менеджеру. Поэтому важно заранее договориться, по каким полям и как ищем.
Типовой набор полей, по которым распознают позицию в B2B:
| Поле | Тип совпадения | Нюанс |
|---|---|---|
| Артикул товара | Точное / префиксное | Главный ключ, приоритет в выдаче |
| Внутренний код (из 1С) | Точное | Дилер может знать код учёта, а не витринный артикул |
| Штрихкод | Точное | Удобно при сканере или выгрузке со штрихкодами |
| Артикул производителя | Точное / нормализованное | Оптовик часто оперирует кодом вендора |
| Название | По вхождению слов | Запасной путь, ниже по приоритету |
Отдельная головная боль опта — разнобой в написании артикулов. Один и тот же код у поставщика и у дилера может отличаться пробелами, дефисами, регистром, ведущими нулями: «A-1001», «A1001», «a 1001», «0001001». Чтобы поиск не спотыкался об это, артикулы нормализуют — приводят к единому виду (убирают лишние символы, выравнивают регистр) и сравнивают нормализованные значения. Без нормализации дилерский файл с «другим» написанием кодов не сопоставится, хотя товары те же.
Ещё один вопрос — множественные артикулы у одного товара. В опте нередко у позиции есть и собственный артикул, и код 1С, и артикул производителя, и старый код после смены номенклатуры. Хорошая реализация умеет искать по всем этим значениям и вести к одному товару, чтобы дилер нашёл позицию под любым знакомым ему кодом. Как устроить такой мультипоиск и нормализацию, мы разбираем в отдельном материале про поиск по артикулу.
Массовое добавление списком «артикул;количество»
Когда позиций много, вводить их по одной в строке уже долго. Здесь помогает массовое добавление в корзину — поле, куда дилер вставляет готовый список строк вида «артикул;количество», по одной на позицию. Он копирует список из блокнота, из письма или прямо из своей таблицы Excel — и система разбирает весь блок разом.
Формат вставки делают максимально терпимым, потому что дилеры копируют по-разному:
- Разные разделители. Между артикулом и количеством может быть точка с запятой, запятая, табуляция или пробелы — парсер должен понимать основные варианты.
- Количество по умолчанию. Если дилер вставил только артикулы без чисел, разумно подставить количество 1 или кратность упаковки, а не отвергать строку.
- Пустые строки и мусор. Лишние переносы, заголовки таблицы, случайные символы — их отсеивают, не роняя разбор.
- Дубли артикулов. Если один код встречается дважды, количества либо суммируются, либо показывается предупреждение — по согласованному правилу.
После вставки система показывает предпросмотр разбора: таблицу с тем, что распозналось (артикул, найденный товар, цена, скорректированное количество), и отдельным блоком — что не нашлось. Дилер видит результат до того, как корзина собрана, может поправить проблемные строки и только потом подтвердить. Это тот же принцип прозрачности, что и при загрузке файла: сначала показать, потом добавить.
Загрузка заказа из Excel и CSV
Флагманская B2B-функция — загрузка заказа из Excel/CSV. Дилер выгружает у себя список «артикул + количество» (из своей учётной системы, из прайса, из инвентаризации) и загружает файл на сайт. Система парсит его, сопоставляет артикулы с товарами, проверяет наличие и кратность, показывает разбор и собирает корзину. То, что вручную заняло бы полчаса, происходит за минуту.
Хороший сценарий загрузки состоит из понятных шагов, и каждый из них важен для доверия дилера:
- Загрузка файла. Дилер выбирает XLSX, XLS или CSV. Полезно дать шаблон-образец, чтобы структура столбцов совпадала с ожидаемой.
- Определение столбцов. Система понимает, где артикул, а где количество — по заголовкам или по указанию дилера, если столбцы нестандартные.
- Парсинг строк. Файл разбирается построчно, значения нормализуются, пустые и служебные строки отсеиваются.
- Сопоставление артикулов. Каждый код ищется среди товаров по артикулу, коду 1С и другим полям с учётом нормализации.
- Проверки. Для найденных позиций проверяются доступность дилеру, наличие по складам, кратность и минимальная партия; цена берётся по группе клиента.
- Отчёт о разборе. Дилер видит таблицу: что добавлено, что скорректировано, что не найдено или недоступно — с исходными строками файла.
- Подтверждение корзины. Только после просмотра отчёта распознанные позиции переносятся в корзину, и дилер оформляет заказ.
Ключевая мысль — загрузка не должна быть «чёрным ящиком». Молчаливый импорт, который тихо кладёт в корзину «сколько получилось» и не объясняет, что случилось с остальным, хуже отсутствия функции: дилер недосчитается товаров уже в отгрузке и потеряет доверие к инструменту. Отчёт о разборе — обязательная часть, а не опция.
Парсинг файла: форматы, кодировки, разделители
Загрузка из файла кажется простой, пока не столкнёшься с реальными файлами дилеров. Они бывают в разных форматах, кодировках, с разными разделителями и «грязью» внутри. Устойчивый парсер — это половина успеха функции, и на нём экономить нельзя.
Что должен уметь разбирать парсер оптового заказа:
| Особенность файла | Что учесть при парсинге |
|---|---|
| Формат XLSX / XLS | Читать современный и старый Excel; брать первый лист или указанный |
| Формат CSV | Поддержать разделители «;», «,», табуляцию; распознать автоматически |
| Кодировки CSV | UTF-8 и Windows-1251 — иначе кириллица в названиях «поедет» |
| Строка заголовков | Определить и не принять её за товар («Артикул», «Кол-во») |
| Числа с форматированием | «1 000», «1.000», «40,0» привести к числу количества |
| Лишние столбцы | Игнорировать цену, название, комментарии — брать артикул и количество |
| Пустые и битые строки | Пропускать, не роняя весь разбор |
Особенно коварна кодировка CSV. Excel в России часто сохраняет CSV в Windows-1251, а веб ждёт UTF-8. Если это не учесть, кириллические названия и артикулы с буквами превратятся в «кракозябры», и сопоставление сломается. Поэтому парсер определяет кодировку и приводит содержимое к единому виду до разбора.
Отдельно стоит защита от «тяжёлых» файлов. Дилер может по ошибке загрузить выгрузку на 20 тысяч строк или файл не того формата. Парсер должен ограничивать размер и число строк, отдавать понятную ошибку вместо «падения» и не блокировать сервер. Разумный лимит на количество позиций в одном заказе, о котором дилер предупреждён, — нормальная практика.
Сопоставление артикулов с товарами
Сердце любого быстрого заказа — сопоставление введённого или загруженного артикула с конкретным товаром каталога. Это тот самый общий узел, через который проходят и строка, и вставка списка, и загрузка файла. От качества сопоставления зависит, соберётся ли корзина правильно.
Сопоставление — это не просто «найти строку в базе». В B2B оно осложнено несколькими факторами:
- Нормализация кодов. Артикул из файла приводят к тому же виду, что и в каталоге: убирают пробелы и дефисы, выравнивают регистр и ведущие нули — иначе «A 1001» не найдёт «A-1001».
- Несколько ключей поиска. Код ищут не только по витринному артикулу, но и по коду 1С, штрихкоду, артикулу производителя — дилер мог указать любой из них.
- Товары с вариациями. Если у позиции есть торговые предложения (размеры, фасовки), артикул должен вести к конкретному SKU, а не к «родителю». Как устроены SKU, мы разбираем в статье про торговые предложения.
- Доступность дилеру. Найденный товар ещё нужно проверить: входит ли он в ассортимент, доступный этой группе клиентов, — закрытые позиции не должны попадать в корзину «обходным путём».
Правильный подход — вынести сопоставление в единый сервис на бэкенде, который принимает сырой артикул и количество, а возвращает результат: найден товар или нет, какой именно, доступен ли, какая цена и кратность. Тогда все интерфейсы быстрого заказа пользуются одной логикой, и поведение везде одинаковое. Это и удобнее в поддержке, и предсказуемее для дилера.
Ещё один разумный приём — кэшировать индекс артикулов. Каталог опта может насчитывать десятки тысяч позиций, и искать по нему на каждую строку файла напрямую — медленно. Поэтому строят поисковый индекс (по артикулам, кодам, штрихкодам) и сопоставляют по нему, а не полным перебором. Это делает загрузку файла на сотни строк быстрой.
Обработка «не найдено» и неоднозначностей
Идеального файла не бывает. В любом заказе найдутся строки, которые не сопоставились: опечатка в артикуле, снятая с производства позиция, код, которого нет в вашем каталоге, или наоборот — код, которому соответствует сразу несколько товаров. Как система ведёт себя в этих ситуациях — главный признак зрелости быстрого заказа.
Базовые сценарии и правильная реакция:
| Ситуация | Как должен вести себя быстрый заказ |
|---|---|
| Артикул не найден | Вынести строку в блок «не найдено» с исходным значением, не роняя импорт |
| Несколько товаров на артикул | Предложить выбор или применить правило сопоставления, показать это дилеру |
| Товар недоступен группе | Отметить как недоступный с пояснением, не добавлять в корзину |
| Количество не распознано | Подставить количество по умолчанию или показать строку для правки |
| Позиция снята с продажи | Отметить и, если есть, предложить актуальную замену |
Главный принцип — частичный успех вместо полного отказа. Одна плохая строка не должна отменять весь заказ на сотню позиций. Всё, что распозналось, идёт в корзину; всё спорное — выносится в отдельный, хорошо заметный список, где дилер видит исходную строку файла и может её поправить, найти товар вручную или заказать иначе. Возможность исправить прямо в отчёте — большой плюс: дилер не перезагружает файл заново, а дозаполняет проблемные строки на месте.
Неоднозначность (один код — несколько товаров) в опте встречается чаще, чем кажется: дубли в каталоге после миграций, одинаковые артикулы производителя у разных позиций, коллизии кодов. Молча брать «первый попавшийся» товар нельзя — можно заказать не то. Правильно либо показать дилеру выбор, либо иметь чёткое правило приоритета (например, по коду 1С важнее, чем по названию) и явно сообщить, по какому признаку выбрана позиция.
Минимальная партия и кратность упаковки
Опт почти никогда не продаётся поштучно «как угодно». Товар идёт коробами, паллетами, упаковками: кратно 6, 12, 24 штукам, с минимальной партией отгрузки. Если быстрый заказ игнорирует эти правила, дилер набьёт корзину «неправильными» количествами, и заказ либо развалится на согласовании, либо уедет в 1С в некорректном виде. Поэтому проверка кратности и минимальной партии — обязательная часть сборки.
Как это работает при быстром заказе и загрузке файла:
- Кратность упаковки. Если товар продаётся кратно 12, а дилер указал 40, система округляет до допустимого (36 или 48) и явно сообщает об изменении.
- Минимальная партия. Если минимум отгрузки — 24 штуки, а запрошено 6, количество поднимается до минимума с предупреждением или строка помечается для решения.
- Единица заказа. Иногда заказ ведут не в штуках, а в упаковках или коробах — тогда количество из файла трактуется в этих единицах, и это надо согласовать заранее.
- Правило округления. Вверх, вниз или к ближайшему — это бизнес-решение. Чаще округляют вверх (чтобы дилер получил не меньше нужного), но правило проговаривают.
Ключевая мысль: значения кратности и минимальной партии — это свойства товара из 1С, а не выдумка сайта. Учётная система знает, как фасуется и отгружается позиция, передаёт это обменом, а сайт применяет при сборке корзины. Если данных о кратности нет в каталоге, проверять нечего — поэтому наличие этих свойств в обмене проговаривают на старте.
И снова важна прозрачность. Любую корректировку количества система показывает дилеру: «вы указали 40, округлили до 48 — кратность упаковки 12». Молчаливое изменение количества воспринимается как ошибка магазина, даже если оно правильное. Явное объяснение снимает вопросы и повышает доверие к инструменту.
Проверка наличия по складам в момент заказа
Оптовику критично важно знать не «есть ли товар вообще», а сколько его доступно прямо сейчас и на каком складе. Заказать 100 штук того, чего в наличии 30, — значит получить недопоставку или задержку. Поэтому быстрый заказ проверяет наличие в момент сборки корзины, а не показывает абстрактное «в наличии / нет».
Что важно учитывать при проверке наличия в B2B:
- Остаток по складам. Если отгрузка идёт из нескольких точек, дилеру полезно видеть наличие в разрезе складов, а не только суммарно.
- Учёт резервов. Доступное количество — это остаток за вычетом уже зарезервированного под другие заказы, иначе двое дилеров «закажут» один и тот же товар.
- Частичная доступность. Если запрошено больше, чем есть, система предлагает варианты: заказать доступное, поставить остаток под заказ или пометить строку.
- Актуальность данных. Наличие приходит из 1С обменом; дилеру важно понимать, на какой момент оно верно, поэтому иногда показывают время последней синхронизации.
Как именно реагировать на нехватку — это опять же бизнес-правило. Одни поставщики разрешают заказывать «в минус» (под будущую поставку), другие ограничивают заказ доступным остатком, третьи переводят такие позиции на согласование менеджеру. Сайт реализует выбранную политику, но формулирует её компания. Важно только, чтобы поведение было явным и предсказуемым: дилер должен понимать, что произойдёт с позицией, которой не хватает на складе.
Технически наличие и резервы ведутся в учётной системе и передаются на сайт. Пытаться «считать остатки на сайте» по заказам — та же ошибка, что считать баланс: цифры разойдутся с 1С. Сайт отображает наличие из обмена и, если нужен жёсткий контроль в момент оформления, обращается к 1С за проверкой и резервом — об этом ниже в разделе про интеграцию.
Цены по группе клиента в быстром заказе
Быстрый заказ в B2B всегда работает для авторизованного дилера, а значит — по его ценам. Это принципиально: если строка быстрого заказа или загрузка файла подставит розничную цену вместо оптовой, дилер увидит неверную сумму и потеряет доверие ко всему инструменту. Поэтому цена в быстром заказе берётся по группе клиента ровно так же, как в каталоге.
Механика та же, что и в остальном B2B-каталоге: у товара несколько типов цен (розничная, оптовая, дилерская), а группа пользователя определяет, какую он видит. Дилер, добавляя позицию через быстрый заказ, получает цену своей группы; для ключевых партнёров это может быть индивидуальная цена из 1С по контрагенту. Подробно механизм персональных цен мы разбираем в статье про оптовые цены по группам клиентов в 1С-Битрикс — в быстром заказе он просто применяется при сборке корзины.
Несколько практических нюансов, о которых стоит помнить:
- Цена в подсказке автодополнения. Уже в выпадающих подсказках строки быстрого заказа полезно показывать цену группы, чтобы дилер видел её до добавления.
- Согласованность с корзиной. Цена в быстром заказе, в корзине и в оформленном заказе должна быть одна и та же — расхождение сразу подрывает доверие.
- Скидки от объёма. Если у вас есть ценовые лестницы (чем больше партия, тем ниже цена за штуку), быстрый заказ должен учитывать их при пересчёте количества.
- Кэш с учётом группы. Цены нельзя кэшировать «одинаково для всех» — иначе дилер получит из общего кэша чужую цену. Персональные данные выносят из общего кэша.
Отдельно — про кто видит быстрый заказ вообще. Логично открывать этот инструмент только авторизованным дилерам: гостю он бесполезен, а показывать закрытые цены и артикулы незалогиненному посетителю не стоит. Обычно ссылка на быстрый заказ живёт в личном кабинете дилера, о котором у нас есть отдельная большая статья про личный кабинет дилера.
Шаблоны закупок и избранные списки
Опт живёт повторяющимися заказами. Дилер редко придумывает закупку заново — чаще он берёт примерно то же, что и в прошлый раз. Быстрый заказ отлично соединяется с этой привычкой через шаблоны повторных закупок и избранные списки: сохранённые наборы товаров, которые партнёр заказывает регулярно.
Как это устроено и зачем нужно:
- Сохранение списка. Дилер сохраняет набранный или загруженный заказ как шаблон — «моя стандартная поставка», «заказ для точки на Ленина».
- Несколько шаблонов. Крупный партнёр ведёт разные списки: по проектам, по категориям, по торговым точкам — и открывает нужный.
- Шаблон из прошлого заказа. Любой заказ из истории можно превратить в шаблон, чтобы не набирать его снова.
- Пересчёт при применении. Открывая шаблон, дилер получает актуальные цены и наличие, а не замороженные на момент сохранения, — с подсказками, что изменилось.
- Правка количеств. Шаблон — это заготовка: дилер корректирует количества под текущую потребность и отправляет в корзину одним действием.
По сути шаблоны закупок и повторный заказ — две стороны одного сценария регулярных закупок. Повторный заказ берёт конкретный прошлый заказ целиком; шаблон — это осознанно сохранённый «эталонный» список, который партнёр ведёт и обновляет сам. Оба должны работать не «слепым копированием», а с проверкой актуальности — цены могли измениться, товар мог уйти из ассортимента, что-то могло попасть под замену. Дилер должен видеть дифф: что перенеслось как есть, что подорожало, чего нет.
«Нет в наличии», замены и поставка под заказ
Отдельно разберём ситуации, когда товар из списка недоступен полностью или частично — их в опте много, и от того, как система их обрабатывает, зависит, будет заказ корректным или «рассыплется» на согласовании.
Типовые случаи недоступности и разумная реакция:
| Случай | Возможное поведение |
|---|---|
| Совсем нет на складе | Пометить позицию, предложить «под заказ» или исключить с пояснением |
| Есть меньше, чем нужно | Предложить доступное количество, остаток — под заказ или в лист ожидания |
| Позиция снята с продажи | Отметить и, если настроено, предложить актуальную замену-аналог |
| Временно недоступна дилеру | Показать причину, не добавлять молча в корзину |
| Ожидается поступление | Показать дату прихода, если она ведётся в 1С |
Важно, чтобы недоступность не ломала весь заказ. Если из 60 позиций трёх нет на складе, дилер должен спокойно оформить 57 и отдельно решить, что делать с оставшимися: подождать, взять аналог или отказаться. Плохой сценарий — когда система либо молча выкидывает недоступное, либо, наоборот, блокирует оформление всего заказа из-за пары позиций.
Механика замен и аналогов — более сложная и настраивается по потребности. Иногда у товара в 1С ведётся связь «заменяющая позиция», и тогда система может предложить аналог при отсутствии оригинала. Это полезно, но требует, чтобы данные о заменах велись в учёте — сайт их не придумает. Начинать стоит с честного «нет в наличии» и явных вариантов, а замены добавлять, если под них есть данные и бизнес-необходимость.
Интеграция с 1С: артикулы, резерв, валидация
Быстрый заказ работает на данных каталога сайта, но почти каждый его элемент опирается на обмен с 1С. Артикулы, коды, персональные цены, остатки, кратность, минимальная партия — всё это ведётся в учётной системе и приходит на сайт обменом. Без актуального обмена быстрый заказ будет собирать корзину по устаревшим данным, и весь его смысл — точность и скорость — пропадёт.
Что именно связывает быстрый заказ с 1С:
| Данные | Направление | Роль в быстром заказе |
|---|---|---|
| Артикулы, коды, штрихкоды | 1С → сайт | Ключи для сопоставления позиций |
| Типы цен по контрагенту | 1С → сайт | Цена группы клиента при добавлении |
| Остатки по складам | 1С → сайт | Проверка наличия в момент заказа |
| Кратность и мин. партия | 1С → сайт | Округление и проверка количества |
| Оформленный заказ | сайт → 1С | Заказ уходит в учёт как есть |
| Валидация и резерв | сайт ↔ 1С | Проверка артикулов и бронь при оформлении |
Базовый обмен каталогом, ценами и заказами идёт по стандарту CommerceML. А вот онлайн-валидация артикулов и резервирование в момент оформления — это уже расширенный сценарий для проектов, где важна жёсткая корректность. Идея в том, что при подтверждении крупного заказа сайт обращается к 1С: подтверди, что эти артикулы существуют, что количества доступны, и зарезервируй их. Тогда заказ, ушедший в учёт, гарантированно обеспечен, и не возникает ситуации «на сайте было, в 1С нет».
Такой обмен всегда проектируют под конкретную конфигурацию 1С — «коробочной кнопки» тут нет. Нужно решить, какие проверки делать синхронно (в момент оформления), а какие — по обмену заранее, и что делать при недоступности 1С: разрешать оформление по данным сайта с последующей сверкой или блокировать. Общие принципы обмена мы разбираем в материалах про интеграцию с 1С, а под быстрый заказ обмен настраивают индивидуально, вместе с логикой резерва и валидации.
Реализация в 1С-Битрикс: компоненты и кастом
Перейдём от «что должно быть» к «на чём это делается». Быстрый заказ на 1С-Битрикс собирают не с нуля — платформа даёт фундамент из модулей и компонентов, поверх которого пишут B2B-логику.
Основные кирпичики:
- Модуль «Торговый каталог». Хранит артикулы, цены по типам, склады и остатки, кратность — источник данных для сопоставления и проверок.
- Модуль «Интернет-магазин» и корзина. Механика заказа, добавление позиций, оформление, статусы — быстрый заказ в итоге кладёт товары в штатную корзину.
- Компоненты каталога.
catalog.section, поиск и автодополнение как основа для строки быстрого заказа с подсказками. - Компонент корзины
sale.basket.basket. Отображение и пересчёт собранной корзины — быстрый заказ работает «до» неё, наполняя её позициями. - AJAX-контроллеры. Собственные контроллеры на базе ядра D7 для автодополнения, разбора списка, парсинга файла и добавления в корзину.
Важно понимать: штатного «быстрого заказа для опта» в коробке Битрикса нет. Есть кирпичи — поиск, каталог, корзина, обмен, — из которых собирают инструмент. Строку с автодополнением можно построить на штатном поиске, но сопоставление по нескольким кодам с нормализацией, разбор вставленного списка, парсинг Excel/CSV, проверку кратности и наличия, отчёт о разборе — это проектная разработка. Готовые решения из Маркетплейса закрывают часть сценариев, но под конкретный каталог и обмен их почти всегда дорабатывают.
AJAX, производительность и UX для B2B
Быстрый заказ создан ради скорости, поэтому он не имеет права тормозить. Если автодополнение думает секунду на каждую букву, а загрузка файла на 200 строк вешает страницу на полминуты, дилер вернётся к почте. Технически за отзывчивость отвечают AJAX и продуманная работа с данными.
Что важно с точки зрения производительности:
- Автодополнение через AJAX. Подсказки подгружаются асинхронно, с задержкой (debounce) и минимальной длиной запроса, чтобы не бомбить сервер на каждую букву.
- Индекс поиска по артикулам. Сопоставление идёт по подготовленному индексу, а не полным перебором каталога — это делает загрузку сотен строк быстрой.
- Пакетная обработка файла. Большой файл разбирают порциями, показывая прогресс, а не «замораживают» браузер до конца разбора.
- Кэш с учётом пользователя. Персональные цены и наличие не кэшируют «для всех» — иначе дилер увидит чужие данные из общего кэша.
Не менее важен и UX именно для B2B. Закупщик работает быстро и с клавиатуры, поэтому интерфейс быстрого заказа должен это поддерживать:
- Клавиатурная навигация. Ввод артикула, Enter, количество, Enter — без обязательной мыши.
- Понятный отчёт о разборе. Заметные блоки «добавлено», «скорректировано», «не найдено» — а не мелкий текст, который легко пропустить.
- Правка на месте. Проблемные строки редактируются прямо в отчёте, без повторной загрузки файла.
- Сохранение введённого. Если что-то пошло не так, набранный список не должен пропадать — дилер не любит вводить заново.
- Подсказки и шаблон. Пример формата, ссылка на шаблон файла, пояснение про кратность — прямо на странице быстрого заказа.
B2B-интерфейс не обязан быть «красивым» в розничном смысле, но обязан быть быстрым и предсказуемым. Плотная таблица, минимум лишних кликов, ясные статусы позиций — это то, что закупщик ценит больше визуальных эффектов.
Безопасность и права в быстром заказе
Быстрый заказ работает с закрытыми данными опта — артикулами, персональными ценами, наличием, — поэтому к нему применимы те же правила безопасности, что и ко всему B2B-кабинету. Ошибки здесь опаснее, чем в рознице: можно раскрыть закрытый прайс или позволить заказать недоступный товар.
Три вещи, которые держат под контролем:
- Доступ к инструменту. Быстрый заказ и его AJAX-эндпоинты открыты только авторизованным дилерам. Незалогиненный запрос к автодополнению не должен отдавать закрытые артикулы и цены.
- Проверка доступности на бэкенде. То, что товар недоступен группе клиента, проверяется на сервере при добавлении, а не скрытием в интерфейсе. Иначе позицию можно «протолкнуть» в корзину прямым запросом.
- Цены — с сервера, не с клиента. Цена позиции всегда берётся на бэкенде по группе пользователя. Нельзя доверять цене, пришедшей из формы или файла, — иначе её можно подменить.
Отдельно — про загрузку файлов. Приём файла от пользователя — это всегда точка риска: проверяют тип и размер, не исполняют содержимое, парсят в изолированной логике, ограничивают число строк. Файл дилера — это данные для разбора, а не код, и относиться к нему нужно соответственно.
Частые ошибки
Эти промахи повторяются в B2B-проектах чаще всего — зная их, вы сэкономите время и нервы партнёров:
- Молчаливый импорт. Загрузка тихо кладёт «сколько получилось» и не показывает, что не нашлось, — дилер недосчитывается товаров в отгрузке.
- Нет нормализации артикулов. «A 1001» не находит «A-1001», дилерский файл с другим написанием кодов не сопоставляется, хотя товары те же.
- Игнор кратности и минимальной партии. Корзина набивается «неправильными» количествами, заказ разваливается на согласовании или уходит в 1С некорректным.
- Розничная цена в быстром заказе. Дилер видит не свою цену, сумма расходится с прайсом — доверие к инструменту падает сразу.
- Одна плохая строка роняет весь файл. Импорт отказывается целиком из-за пары ошибок вместо частичного успеха с разбором.
- Кодировка CSV не учтена. Кириллица в названиях и артикулах превращается в «кракозябры», сопоставление ломается.
- Наличие не проверяется. Дилер заказывает то, чего нет, — недопоставка и задержка вместо честного «доступно 30».
- Нет отчёта о разборе. «Чёрный ящик» без объяснения, что произошло, — хуже отсутствия функции.
- Быстрый заказ доступен гостю. Закрытые артикулы и цены отдаются незалогиненному запросу к автодополнению.
- Тормозящее автодополнение. Поиск по всему каталогу перебором без индекса — подсказки думают секунды, дилер уходит.
- Проверки только на клиенте. Доступность и цену считают в браузере, позицию можно протолкнуть прямым запросом.
- Быстрый заказ живёт отдельно от обмена. Артикулы, цены и остатки не обновляются из 1С — корзина собирается по устаревшим данным.
Чек-лист быстрого заказа
Короткий список для приёмки быстрого заказа перед запуском — по нему удобно проверить, что B2B-минимум закрыт:
- Строка с автодополнением. Поиск по артикулу, коду 1С, штрихкоду и названию; приоритет точного совпадения; показ цены и наличия в подсказке.
- Нормализация артикулов. Коды приводятся к единому виду (пробелы, дефисы, регистр, ведущие нули), поиск по нескольким ключам.
- Массовое добавление списком. Вставка «артикул;количество» с терпимым парсером и предпросмотром разбора.
- Загрузка Excel/CSV. XLSX, XLS, CSV; разные разделители и кодировки; шаблон файла для дилера.
- Прозрачный разбор. Отчёт «добавлено / скорректировано / не найдено / недоступно» с исходными строками и правкой на месте.
- Проверка кратности и минимальной партии. Округление по согласованному правилу с явным сообщением дилеру.
- Проверка наличия. Остаток по складам с учётом резервов, поведение при нехватке определено.
- Цены по группе клиента. Персональная цена в подсказке, корзине и заказе совпадает; кэш с учётом пользователя.
- Шаблоны закупок. Сохранение списков, шаблон из прошлого заказа, пересчёт по актуальным ценам с диффом.
- Обработка недоступности. «Нет в наличии», частичная доступность, замены и «под заказ» не ломают весь заказ.
- Интеграция с 1С. Артикулы, цены, остатки, кратность из обмена; при необходимости — валидация и резерв при оформлении.
- Безопасность и скорость. Доступ только дилерам, проверки на бэкенде, индекс поиска, AJAX без перезагрузок.
Вывод
Быстрый заказ по артикулу и загрузка из Excel — это не украшение B2B-магазина, а ответ на то, как устроена оптовая закупка. Оптовик не выбирает по каталогу, он закупает по списку, и инструмент должен соответствовать этому: строка с автодополнением для нескольких позиций, вставка списка «артикул;количество» и загрузка файла для больших заказов, шаблоны для регулярных поставок. Всё это собирает корзину минуя каталог и экономит дилеру и менеджеру часы.
Два принципа определяют, будет инструмент работать или создавать проблемы. Первый — прозрачный разбор: система всегда показывает, что распозналось, что скорректировано по кратности и наличию, а что не нашлось, — и только потом собирает корзину; молчаливый импорт недопустим. Второй — 1С как источник данных: артикулы, персональные цены, остатки, кратность и минимальная партия приходят из учётной системы, а проверки и, при необходимости, резерв делаются на её данных. Соблюдая их и строя единое ядро сопоставления под все интерфейсы ввода, вы получаете быстрый заказ, которому дилер доверяет: коды сопоставлены верно, цена его, количество корректно, наличие реально. А начинать разумно с простого — вставки списка и надёжного сопоставления, — наращивая загрузку файлов, шаблоны и резерв под реальные запросы партнёров.