ОБСУДИТЬ ПРОЕКТ
EN RU
Контакты
Мы на связи

+7 (925) 625-67-59

E-mail:

[email protected]

Skype:

gelos_912

Напишите нам

Спасибо, что обратились к нам!

Ваше сообщение отправлено и в ближайшее время мы его рассмотрим и постараемся ответить

Интернет-магазин на Bitrix: нестандартный подход

Сотрудники нашей компании осуществляют постоянную техническую поддержку и сопровождение сайта rentek.ru, в течении длительного времени. В декабре 2011 — январе 2012 г. нам была поставлена задача разработки нестандартного интернет-магазина запасных частей для дорожно-строительной техники.
Интернет-магазин на Bitrix: нестандартный подход
Сотрудники нашей компании осуществляют постоянную техническую поддержку и сопровождение сайта rentek.ru, в течении длительного времени. В декабре 2011 — январе 2012 г. нам была поставлена задача разработки нестандартного интернет-магазина запасных частей для дорожно-строительной техники.

Сотрудники нашей компании осуществляют постоянную техническую поддержку и сопровождение сайта rentek.ru, в течении длительного времени. В декабре 2011 — январе 2012 г. нам была поставлена задача разработки нестандартного интернет-магазина запасных частей для дорожно-строительной техники. В числе заявленных требований было огромное количество товаров интернет магазина (30 — 200 тыс. наименований), небольшое количество хранимой информации по каждой запасной части, необходимость наличия поиска, позволяющего находить необходимые запасные части даже в случае неправильного вода артикула запасной части. Одновременно, описанный поиск является и основным способом навигации по магазину (поддержка навигации по категориям не предусматривалась техническим заданием). Планируемое количество запасных частей — товаров магазина определяло способ их внесения в Интернет-магазин — из прайс-листов в формате Microsoft Excel.

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

10.054.png

Первой задачей было обеспечения хранения данных (запасных частей) с интеграцией в админ. панель управления сайтов. Для хранения данных были выбраны инфоблоки — одна запасная часть представляется как один элемент инфоблока. Для основных информационных единиц были созданы инфоблоки и в них были настроены необходимые дополнительные поля.

Для обеспечения основных функциональных особенностей магазина были созданы справочники валют (с хранением курсов валют относительно рубля), поставщиков и производителей (с  хранением основных и дополнительных атрибутов), а также основной инфоблок, хранящий перечень запасных частей с атрибутами, а также 2 инфоблока, хранящих заявки на регистрацию (регистрация выполняется администратором сайта) и перечень оформленных заявок.

После создания структуры была проведена пробная заливка товаров. Первым неприятным сюрпризом стало то, что Битрикс, при отображении содержимого инфоблока через админку, загружает все его содержимое в оперативную память. Соответственно, при отображении содержимого инфоблоков с большим количеством элементов скрипты типа /admin/iblock_list_admin.php будут просто «падать» при попытке просмотреть содержимое инфоблока. Узким местом становится размер памяти, выделенный для скрипта хостером. Выходом становится либо его (хостера) смена, либо разработка собственного, менее ресурсоемкого, механизма отображения содержимого инфоблоков. При этом нет гарантии что узким местом при разработке такого механизма не cтанет API Битрикса. Поскольку предполагалось, что сами задачи заливки товаров в магазин, а также выборки при помощи поиска будут достаточно ресурсоемкими, был выполнен перенос сайта на сервера KDTeam, где Битриксу были предоставлены необходимые лимиты памяти.

Следующей сложной задачей было разработка механизма внесения запасных частей в базу данных. Как уже говорилось выше, входные данные предоставлялись в формате MS Excel в форме заранее согласованного вида. Базируясь на прошлом опыте разработки компонентов для внесения товаров в Virtuemart из такого формата, мы предварительно оценили эту задачу как несложную. К сожалению, оказалось, что разработанное программное обеспечение, корректно отрабатывающее 2-3 тыс. отладочных товаров является совершенно неработоспособным при 60 — 100 тыс. Кроме того, программный код, совершенно корректный с точки зрения API Bitrix и использующий исключительно стандартные функции API показывал крайне низкую производительность — по сравнению со своим аналогом на «чистом» PHP. В результате, применение стандартного подхода к импорту данных в MS Excel привело бы к необходимости держать открытым браузер на протяжении 12-13 часов, пока идет полная обработка прайс-листа. Естественно что такой результат удовлетворительным назвать было нельзя.

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

Наиболее эффективным средством импорта прайс-листов была выбрана загрузка по FTP с последующим  запуском соответствующего скрипта-обработчика по SSH. Использование screen позволяет сразу после запуска закрыть окно терминальной сессии без угрозы прерывания выполнения скрипта. При этом серверное ПО самостоятельно устанавливает приоритет процесса скрипта-обработчика, снимая возможность полной загрузки сервера им.

Результат анализа быстродействия показал, что можно ускорить выполнение исходного кода в шесть раз путем выделения инфоблока в отдельную таблицу (средствами Bitrix) и ручной установкой индексов таблицы. Общее время прайс-листа запасных частей в 65 тыс. строк при полной загрузке сервера занимало порядка 2 часов. При это для каждой записи (элемента инфоблока), выполняется ряд проверок, решающих вопросы дублирования запасных частей и установки связей между ними.

Инфоблоки интернет-магазина с количеством элементов

Внедрение индексов позволило также ускорить работу поиска запасной части. В соответствии с техническим заданием. пользователь имеет возможность ввести артикул запасной части с пробелами, точками, тире, запятыми и другими спец. символами. Система, в свою очередь, должна предложить пользователю варианты (артикулы), подходящие под введенные пользователем критериями. Эта задача решилась относительно просто — путем использования регулярного выражения как поискового критерия в Bitrix API.

Поиск запасной части по артикулу

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

Найден артикул с полным соответствием

Кроме того, в магазине реализован еще один вид поиска, реализованный в программном обеспечении магазина — поиск по кросс-листам. Пока, к сожалению, этот вид поиска представлен не очень широко, поскольку подготовка кросс-листов связана с большими трудозатратами. Однако работы в этом направлении ведутся сотрудниками компании-заказчика.

Кросс-лист — это файл в формате MS Excel, устанавливающий связи между запасными частями — аналогами. Другими словами, существуют возможность поставить не оригинальную запасную часть, а аналог другого производителя. Для того чтобы система в автоматическом режиме предлагала аналоги и используются кросс-листы. Система поддерживает кросс-листы с прямой и обратной кроссировкой. Прямая кроссировка означает, что связь является односторонней — то есть альтернативную з/ч можно поставить на место оригинала, а в обратной последовательности — нет. Обратная кроссировка предполагает тоже самое, только в точности наоборот :) Система «умеет» находить аналоги по обоим видам кроссировок.

После нахождения нужного артикула, пользователю переходит на страницу товара.

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

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

Корзина интернет-магазина

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

После заполнения и подтверждения заказа о его размещении уведомляется пользователь и администратор по электронной почте.

Одновременно в магазине реализован и аналитический модуль. Его основная задача — анализ размещенных заказов на запасные части и формирование перечня запасных частей для заказа у поставщиков. Ответственные пользователи получают аналитические отчеты по электронной почте по расписанию.

Работающая версия магазина размещена по адресу http://www.rentek.ru/ishop/

гарантии

гарантии

  • 10 лет на международном рынке
  • Внутренние стандарты качества
  • AGILE - методики планирования разработки
  • Передовые методики управления проектами с помощью JIRA
  • Налаженный производственный цикл от планирования и прототипирования до ручного и автоматического тестирования
посмотреть сертификаты отзывы наших клиентов
ГЛАВНОЕ В УСПЕШНОМ ИНТЕРНЕТ-ПРОЕКТЕ
это подобрать надежного и профессионального подрядчика с полным циклом услуг
заполнить бриф