Мы запустили проект, масштабами которого хотим поделиться. Мы решили не делать лонгрид в стиле “Задача — Решение — Результат”, а составить список технологий и их применений. Естественно, любое из описанных решений мы можем повторить для Вашего проекта. Поехали!
Поиск sphinx для 1С-Битрикс
- На сайте работает быстрый поиск Sphinx. Вернее, начали с него, затем вернулись к стандартному поиску 1С-Битрикс, но с существенными доработками. Вначале пробовали использовать поиск Sphinx, но он взлетел и через некоторое время упал на поиске неполных заказных номеров деталей. Как показали наши исследования, Sphinx в связке с Битриксом непригоден для поиска несловарных запросов. Например, в автоиндустрии для поиска номеров запчастей. Это связано с режимом связки Битрикс + Sphinx: real-time индексирование. В таком режиме нельзя включить поиск по подстроке. Поэтому пришлось отказаться от Sphinx и дорабатывать встроенный в Битрикс поисковый движок, “подсовывая” ему на индексирование раздробленные заказные номера (названия товаров). Непосредственно при поиске запроса пользователя делается до 5 различных подзапросов (исправление опечаток) с большим количеством "ИЛИ". В результате имеем умный поиск и поисковый индекс занимающий 50% от общего размера базы данных.
- Быстрый поиск ищет по заголовкам товаров и по названиям категорий. Всего категорий больше 20 тысяч.
- Поиск умеет выполнять замену символов и рассматривает все возможные варианты. Существует таблица из нескольких десятков замен вида 0 — O, 1 - L, итд. Даже если человек допустит ошибку при списывании номера с детали, сайт подскажет все возможные варианты.
- Можно загрузить список номеров товаров и сайт выполнит заказ по списку. Делали под “copy-past из Excel”. Все найденные товары можно одной кнопкой добавить в корзину. Если их не требуется конфигурировать, конечно же.
- Поиск по категориям осуществляется на специальной выдвижной панели слева. Показывает количество найденных категорий “на лету”.

Пошаговый импорт товаров из CSV в 1С-Битрикс
- Исходный каталог [одна из его версий https://eb.automation.siemens.com/] содержит 2 миллиона товаров
- Каталог поставляется на DVD-носителях с 8 гигабайтами базы данных MS Access.
- Для импорта товаров на сайт написана специальное приложение на C# + MS SQL Server, которое готовит CSV-файлы из базы на DVD. Это занимает около трех дней.
CSV грузятся на сайт в течение 3 суток. Существует механизм “паузы импорта”. Для управления процессами импорта мы сделали специальную страницу административной панели:

- Платежная информация и информация о текущем наличии выгружается из 1С.
Конфигуратор товара на сайте
- Товар “знает”, производят его еще или нет. Если уже не производят, предлагает ссылку на свой же аналог, который можно заказать. Например, так:
- У товара может быть несколько десятков вариаций, SKU. Существуют в виде результатов конфигурирования опций товара. Опции делятся на обязательные параметры товара и необязательные. Для этого на сайте предусмотрен конфигуратор товаров. Выглядит так:

- В результате конфигурирования всех товаров максимальное число товарных предложений более 5 миллионов. Товарные предложения хранятся в виде Highload-блока.
- Конфигурирование товаров — самая сложная часть работы. Опции конфигурирования связаны с товарами очень нетривиально и разработку этого инструмента мы выделяли в отдельный этап с отдельным ТЗ.
Пример для устрашения на картинке:

Типы цен в интернет-магазине
- У одного товара может быть 2 типа цен. По хитрой формуле они пересчитываются в третью.
- Цена товара вычисляется по формулам с 10 переменными. Текущий курс валют, наличие товара, местоположение на складах в Германии — лишь некоторые из них.
- Цены пересчитываются в RUR, EUR по текущему курсу. Валюты можно пересчитывать на лету в корзине, в заказе, и даже в генерируемых документах Счет и Договор.
- Для категории товаров можно загрузить изображение, на котором показано, где находится заказной номер. Применяется для всех товаров категории и подкатегорий.

- Пример характеристик товара. Их пришлось собирать из 15 никак не описанных таблиц БД.
Заказ товара и личный кабинет пользователя
- На странице Корзина сайт поможет формировать документы в PDF. Коммерческое предложение на бланке организации и договор поставки.
- В личном кабинете есть раздел Избранное. Туда можно добавлять товары, чтобы не приходилось искать и конфигурировать заново.
- На странице корзины есть доступ в Избранное. Можно добавлять товары в корзину из избранного.
- После оформления заказа в личном кабинете клиента появляются все необходимые документы к заказу — Договор, Счет, Товарная накладная. Каждый содержит смету и пользовательские данные.
- Так как однажды выставленный счет должен действовать не более трех дней, он генерируется каждый раз при скачивании, и дополнительно отправляется на почту администратору.
- У пользователя есть накопительная скидка. Скидка зависит от общей суммы заказов, сделанных пользователем. В личном кабинете пользователю показывают его текущий статус.
- В личном кабинете есть отдельная страница История просмотров. Показывает товары, которые смотрел пользователь за 24 часа. Помогает, если забыл, как товар называется)
- Пользователь может загрузить сканы своих документов на сайт. Они доступны только администратору.
- Матрица Статусов оплаты и Статусов заказов имеет 14 состояний. На основе состояния решается, может пользователь отменить заказ или нет.
- Заказ помнит дату смены состояния.
- Для работы с заказами применяются 2 роли менеджеров.
- Счет можно выставить как в Рублях, так и в Евро

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

Перейти на сайт