Главное Авторские колонки Пресс-релизы Промо Вакансии Вопросы
Выбор редакции:
60 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

B2B интернет-магазин: подбор товаров по Excel и счета из СБИС (Saby) сразу после заказа — кейс диджитал-агентства «Винтра»

Диджитал-агентство «Винтра» разработало компании ООО «Стратегия 96» новый интернет-магазин на «1С-Битрикс» и собственном модуле «Винтра.Веб.Креатор», подключило обмен с учётной системой СБИС и перенесло сайт на боевой домен.
Мнение автора может не совпадать с мнением редакции

ООО «Стратегия 96» — екатеринбургский агросервис, который продаёт запасные части для сельскохозяйственной и погрузочной техники: Manitou, CLAAS, John Deere, Carraro, CNH, силосные зубья, ножи, фильтры, крестовины, рабочие органы к плугам. Клиенты компании — хозяйства, агропредприятия, дилеры и перепродавцы, поэтому магазин работает только с юридическими лицами и ИП: заказ без ИНН здесь невозможен в принципе.

Что было

У компании работал интернет-магазин на «1С-Битрикс» с готовым решением «Аспро: Максимум». Лицензия решения истекла и продлевать её заказчик не планировал, а задача стояла шире косметики: снабженец должен сам получать цену, наличие и счёт, не дожидаясь менеджера.

Заказчик пришёл с техническим заданием на доработку действующего сайта. Мы его разобрали и ответили честно: под перечисленные требования меняется около 80 % сайта — каталог, цены, корзина, оформление, личный кабинет и обмен с учётной системой. Дорабатывать готовое решение в таком объёме означало платить за чужую лицензию и ломать её кастомизацией, а потом повторять это после каждого обновления.

Мы предложили сделать сайт заново на своём движке. Заказчик согласился.

Отдельно о том, что болело до переделки:

  1. розничный и оптовый покупатель видели одну и ту же цену — индивидуальных условий сайт не знал;
  2. списки запчастей на десятки позиций обрабатывались перепиской: клиент присылал Excel, менеджер вручную сверял артикулы с каталогом и отвечал письмом;
  3. счёт выставлял менеджер — то есть заказ, пришедший вечером, ждал утра;
  4. поиск по артикулу не находил ничего, хотя артикулы в каталоге были заполнены;
  5. прайс-лист постоянным клиентам рассылался руками.

С чего начали: техническое задание и прототип

Исходных документов от заказчика было четыре, и они местами противоречили друг другу: ТЗ на доработку, сквозной сценарий «Первый заход на сайт» с макетами, список замечаний и отдельный документ по личному кабинету. Мы свели их в одно техническое задание и зафиксировали правило приоритета: каждый следующий по времени документ уточняет и отменяет предыдущий. Это снимает главный спор приёмки — «а мы имели в виду другое».

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

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

На чём собран сайт

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

Магазин собран не комплексным компонентом, а кирпичами: список разделов, список товаров, карточка, умный фильтр, топ-подборки и поиск — каждый своим блоком поверх штатных компонентов ядра.

Так каждый экран настраивается отдельно, а логика корзины, скидок и оформления остаётся платформенной — мы её не переписывали и не трогали, наше в ней только вёрстка и стили.

Модуль «Винтра.Веб.Креатор» сейчас проходит закрытое бета-тестирование. Его карточка в Маркетплейсе «1С-Битрикс» — marketplace.1c-bitrix.ru/solutions/wintra.webcreator, но в открытый доступ модуль пока не выложен.

Хотите поучаствовать в бете и собрать на нём свой проект — напишите нам, подключим.

Вместе с Веб.Креатором на проекте работают ещё два наших модуля: «Винтра.Интеграция со СБИС» и баннер cookie. Заказчику они достались в рамках заказа, без отдельной оплаты и без новых лицензий.


Главная страница: блок массового поиска по Excel вынесен над слайдером

Каталог и навигация

Категории убрали из левой колонки в широкое мега-меню под шапкой: четыре группы — MANITOU, CLAAS, по типу запчасти, другие бренды — плюс выделенный блок каталогов Manitou. Меню собирается из инфоблока и редактируется из админки: группы, названия, ссылки, порядок и видимость. В шаблон структура не зашита ни одной строкой.

Освободившаяся ширина отдана товарам: фильтр переехал горизонтально над списком, а правая колонка отведена корзине — она появляется, когда в корзине есть хотя бы один товар, и сохраняется при переходах между страницами. Пустая корзина колонку не занимает.

Адреса разделов перенесены со старого сайта один в один — по внешним кодам, а не по названиям, с приведением транслитерации к настройкам боевого сайта. Коды товаров — штрихкоды, они совпали сами. У каждого раздела один канонический адрес, все остальные уводят постоянным редиректом; хлебные крошки сразу дают канонический путь. Накопленные позиции в поиске от переезда не пострадали.


Мега-меню: четыре группы, промо-блок каталогов Manitou и ссылка на весь каталог

Две цены: гостю одна, клиенту другая

Главное требование бизнеса — показать зарегистрированному клиенту его цену. Сделали двумя штатными типами цен: «цена авторизованного» (актуальная) и гостевая, равная актуальной с наценкой 10 %. Гостевая цена записывается на импорте, а не считается при каждом показе страницы: иначе кеш, повторный вход или добавление в корзину начинают накручивать наценку поверх наценки.

Разделение держится на правах групп покупателей на типы цен — своей проверки «вошёл или нет» в коде нет вовсе.

Гость видит цену с подписью «моя цена» и подсказкой, что после входа цена будет другой; авторизованный — свою цену и зачёркнутую гостевую.

Одна и та же цена едет дальше в корзину, оформление, результат массового поиска и счёт. В учётную систему всегда уходит актуальная цена, а прайс-листы наценки не получают.


Карточка товара: наличие, цена по статусу покупателя, аналоги и коммерческое предложение в PDF

Поиск, который находит по артикулу

На старте поиск по артикулу находил ноль позиций при 987 заполненных артикулах — у свойств «артикул», «штрихкод», «бренд» и «производитель» стоял признак «не участвует в поиске». Признак включили, каталог переиндексировали, 3226 товаров — за двадцать секунд.

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


Выдача поиска: артикул, кросс-номера и морфология в трёх проходах

Массовый поиск по Excel — то, ради чего всё затевалось

Отдел закупок работает списками. Раньше это была переписка; теперь это экран.

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

У каждой строки понятный статус: «в наличии в полном объёме», «в наличии N шт.» с пометкой недостающего, «наличие по запросу», «бренд не совпал — артикул совпал точно» и «не найдено». Если артикул без бренда совпал с несколькими товарами, система ничего не подставляет молча, а просит выбрать. Дальше — три действия: добавить доступные позиции в корзину (с повторной проверкой цен и остатков), передать проблемные позиции менеджеру или скачать результат Excel — тем же файлом, с добавленными справа колонками.

Отдельное решение, которое стоит назвать вслух. В каталоге товар с нулевым собственным остатком, но с доступным аналогом, показывается в наличии — заказ надо дать оформить, а менеджер созвонится и предложит замену. В массовом поиске логика обратная: там человек собирает заказ сам, без менеджера, и подсунуть ему аналог вместо запрошенной позиции значит обмануть. Поэтому в результатах списка считается только свой остаток. Цена решения измерена: 845 позиций из 2065 «в наличии» живут на остатке аналога — ровно столько честно становится «по запросу».

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


Запросы по Excel в кабинете: файл, дата, число позиций и сводка по статусам



Результат разбора: исходные строки клиента слева, наши данные справа, у каждой позиции свой статус

Заказ и счёт из СБИС без участия менеджера

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

Дальше начинается то, ради чего подключали учётную систему. По факту оформления заказа сайт обращается к СБИС, создаёт счёт по действующей нумерации компании и возвращает покупателю номер, сумму, срок действия и PDF. Тот же счёт уходит письмом.

Своей нумерации сайт не ведёт вовсе — номер и дату присваивает учётная система, цены, НДС и реквизиты берутся оттуда же, а не из полей браузера.

Что предусмотрено, потому что в реальной жизни это случается:

  1. повторное нажатие кнопки и повторный запрос не создают второй счёт — открывается уже выставленный; два счёта на один заказ означают, что кто-то заплатит по отменённому;
  2. если своего остатка нет, заказ оформляется, но счёт не выставляется: заказ встаёт в стадию «На согласовании», менеджер предлагает замену и запускает счёт;
  3. если учётная система не ответила сразу, заказ не теряется: показывается «счёт формируется», запрос повторяется, документ уходит клиенту по готовности;
  4. отмена заказа покупателем закрыта начиная со стадии выставленного счёта — и в карточке заказа, и в списке.

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

Номенклатура, цены и остатки приезжают на сайт обменом: наш модуль интеграции собирает данные, модуль импорта XML раскладывает их по каталогу. Товары без цены на сайт не выгружаются — решение заказчика.


Карточка заказа: состав, скидка, НДС, блок счёта и закреплённый менеджер

Личный кабинет и организации

Кабинет открывается сразу на заказах — не на анкете и не на приветствии. В меню шесть разделов: заказы, запросы по Excel, организации, избранное, контактные данные, выход.

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

Организация добавляется вводом ИНН — реквизиты подтягиваются автоматически из DaData: полное и сокращённое наименование, КПП, ОГРН, юридический адрес; по БИК подставляются банк, корреспондентский счёт и город.

Выбранная организация подставляется в оформление и может быть изменена в самом заказе. Доступ к чужой истории ввод ИНН не открывает: данные видны только внутри того аккаунта, к которому организация привязана.

В списке заказов — номер, дата, организация, состав, транспортная компания, город, сумма и номер счёта; поиск по номеру и товару, фильтр по году. Из карточки заказа можно скачать счёт PDF, отправить его повторно и повторить заказ — позиции переносятся в корзину с перепроверкой цен и остатков. В карточке заказа виден закреплённый менеджер с телефоном.

Вход сделан двумя способами: по почте с паролем и по номеру телефона. Подтверждение номера — звонком-сбросом, а не SMS: буквенное имя отправителя стоило бы заказчику около 7 600 ₽ в месяц, а звонок решает ту же задачу. Заказ можно оформить и без регистрации — кабинет создаётся по факту заказа, и первая организация рождается из первого же заказа.

Каталоги Manitou: раздел, который собирает лиды

У компании есть PDF-каталоги запчастей по моделям Manitou — MLT 735, MLT 741, MLT 840, MLT 845, MLT 960, MT, MRT, MHT. Раньше их отправляли по запросу вручную. Теперь каждая модель — отдельная индексируемая страница с обложкой, описанием и формой: почта, телефон, ИНН, название организации (подставляется по ИНН) и согласие на обработку данных.


Раздел каталогов Manitou: PDF отдаётся только после формы, прямая ссылка на файл не работает

После отправки клиент получает каталог письмом, служебный адрес — уведомление, а в системе остаётся лид с ИНН, организацией, контактами, названием каталога и адресом страницы. Прямая ссылка на PDF не работает: файл отдаётся контроллером по ограниченной ссылке, путь в коде страницы не публикуется — иначе раздел раздавал бы каталоги молча, не оставляя ни одного контакта. Модели, PDF, описания, обложки и тексты писем заказчик ведёт из админки сам.

Рассылка прайс-листов по расписанию

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

Перенос, SEO и приёмка

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

Внутренняя оптимизация: ЧПУ, генератор мета-тегов, карта сайта, robots.txt, редиректы со старых адресов, сжатие изображений, подключение Яндекс.Метрики с целями. Счётчик намеренно не блокируется баннером cookie — иначе до нажатия «Принять все» объекта счётчика на странице нет вовсе, и статистика теряет большинство посетителей. Электронная торговля включена штатными средствами, цели магазина названы теми же именами, под которыми заказчик собирал статистику раньше.

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

Результат

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

Менеджер подключается там, где он действительно нужен, — когда позиции нет и нужна замена.

Сайт работает на боевом домене new.strat96.ru. Разработка велась с августа по октябрь 2026 года; сейчас проект на поддержке и развитии.

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.