Настройка многосайтовости и интеграций для дистрибьютора серверного оборудования MARVEL

Сайты

Немного о Marvel и его прошлом

Компания «Марвел-Дистрибуция» является официальным дистрибьютором серверного оборудования производителей Hewlett Packard Enterprise и Lenovo. Основанная в 1991 году «Марвел-Дистрибуция» на сегодняшний день является одним из крупнейших широкопрофильных IT-дистрибьюторов на территории России и стран СНГ.

На момент обращения в ИНТЕРВОЛГУ у компании уже был сайт, построенный на базе React. Сайт был быстрый и отзывчивый, но обладал одним существенным недостатком для интернет-магазина – не индексировался поисковыми системами.

Новые горизонты для Marvel

Наша задача была в кратчайшие сроки переехать на Битрикс, настроив многосайтовость и интеграции с базами данных:
  • c каталогом продукции Hewlett Packard Enterprise;
  • c каталогом продукции Lenovo;
  • c общим каталогом.
1С-Битрикс: Управление сайтом – хорош для интернет-магазинов, т.к. имеет много полезных возможностей из коробки. Т.к. сроки были сжаты, мы предложили заказчику ускорить задачу настройки многосайтовости, воспользовавшись тиражным решением. Выбор пал на решение от Аспро – «Аспро: Next - интернет-магазин».

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

Изюминка проекта — источник данных. Предыдущая версия сайта тянула данные из самописной учетной системы (УС) в режиме реального времени. Логика работы Битрикс, все стандартные компоненты и возможности системы предполагают хранение данных в БД сайта. Поэтому запрос данных в режиме реального времени не подходит для Битрикс.

Нужно было реализовать обмен данными в фоновом режиме. Все данные мы логически разбили на сущности. Например, данные о городах, с которыми работает сайт, относятся к сущности «Города». Кстати о городах, их также пришлось загружать из УС, поэтому довольно мощная система местоположений Битрикса осталась в стороне. Еще одной сущностью обмена являются поставщики. И с ними связана, пожалуй, самая серьезная доработка публичной части сайта – реализовать ограничения платежных систем и служб доставки от поставщиков. Подробнее об ограничениях можно почитать в официальной документации. Настройка многосайтовости – Hewlett Packard Enterprise Настройка многосайтовости – серверные хренения Настройка многосайтовости – Lenovo Настройка многосайтовости – оформление заказа в Lenovo

Фундамент нового Marvel

Настройка многосайтовости и концепции обмена Marvel Итак, основной задачей было реализовать обмен с учетной системой заказчика. Для получения данных УС имеет закрытое Rest API. Обмен предполагает импорт:
  • городов;
  • поставщиков;
  • каталога (разделы, свойства, товары с ценами);
а также экспорт:
  • заказов;
  • данных формы «Задать вопрос».
Структура данных, естественно, отличается от Битриксовой, поэтому при обмене требуется конвертация данных. Города и поставщики хранятся в Highload-блоках, форма «Задать вопрос» – веб-форма, остальные – в одноименных сущностях Битрикс.

Типы обмена

Импорт сущностей мы разделили логически на первичный и повторный. При первичном импорте сущности ее данные на сайте отсутствуют. Все элементы сущности будут выгружены на сайт. При повторном импорте – элементы, которых еще нет на сайте будут добавлены, а которых нет в ответе API – удалены.

Для элементов сайта мы храним хэш основных значимых полей. Это позволяет нам отслеживать изменения данных и не обновлять элементы в случае отсутствия изменений. Исходя из наличия хеша мы также разделяем импорт на «полный» и «только изменения».

Импорт разделов

Особняком создания многосайтовости стоит импорт разделов. Дело в том, что у заказчика было требование редактировать разделы на сайте: как информацию и описание, так и иерархию. Если бы мы выполняли обмен разделами по вышеописанному сценарию, это бы привело к огромной неразберихе. Поэтому разделы импортируются по особому сценарию:
  • при первичном импорте на сайте создается полная копия дерева разделов.
  • при повторном импорте изменения существующих разделов не обрабатываются, разделы которых нет в выгрузке – деактивируются, а новые разделы попадают в служебный неактивный раздел без сохранения иерархии.
Такой сценарий предполагает, что иерархия разделов на сайте может заметно отличаться от таковой в УС. Но все же импорт позволит получать и изменения с УС.

Расписание

Обмен с УС выполняется с помощью агентов по расписанию во время наименьшей активности посетителей на сайте. Обмен сущностей происходит в строго установленном порядке. Сначала импорт независимых сущностей «Города» и «Поставщики», далее – импорт сущностей каталога «Разделы», «Свойства», «Товары», и в конце – экспорт «Заказов». Обмен осуществляется поочередно для каждого сайта. Гаджет обмена (обмен не выполняется) Управление и мониторинг Мы также предусмотрели механизмы отслеживания и ручного управления обменом. Для этого был разработан гаджет для рабочего стола в админке.

Гаджет позволяет отслеживать текущий обмен:
  • время начала и продолжительность;
  • настройки;
  • ошибки;
  • текущий прогресс по сущностям.
Прогресс по сущностям показывает, какая сущность обрабатывается в данный момент и сколько из скольки элементов каждой сущности обработано. Счетчик количества ошибок содержит ссылку на страницу их подробного описания. Второй блок гаджета показывает аналогичную статистику по последнему завершенному обмену. Еще один блок показывает общий список последних ошибок обмена со ссылкой для перехода к подробному описанию.

Ну и вишенка на торте – блок управления обменом. Он позволяет выбирать сущности обмена, задавать настройки и принудительно запускать обмен.

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

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

Логирование

Основные данные об обмене, отображаемые в гаджете мы храним в отдельной таблице, а для логирования ошибок используем удобный инструмент «Журнал событий», куда пишем ошибки обращения к API, ошибки добавления элементов в БД сайта, ошибки экспорта заказов и прочее.

Гаджет имеет одну единственную настройку – ID сайта, с которым он работает. Соответственно, для каждого сайта – свой гаджет. При таком режиме гаджет занимает всю площадь экрана и позволяет отслеживать всю необходимую информацию на 1 экране. Гаджет обмена (обмен выполняется)

Сложности и риски

Интеграция – сложный тип задач. Требуется соединить две системы, к одной из которых, как правило, нет доступа, ее нельзя изменить и приходится довольствоваться тем, что есть. С этой проблемой мы столкнулись при импорте свойств. Структура данных свойств сильно разнилась с тем, как это устроено в Битрикс. Если для получения данных большинства сущностей нам хватало 1 запроса, то здесь потребовалось несколько. Эта особенность не была замечена на раннем этапе. Не было и возможности доработать API в рамках установленных сроков. Пришлось мириться с тем, что есть. Как результат – немного увеличилось время на реализацию импорта свойств, а также сам импорт свойств выполняется дольше, чем могло быть.

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

В целом – это не существенно, т.к. обмен все равно происходит в фоновом режиме в момент наименьшей пользовательской активности.

Заключение

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


ИНТЕРВОЛГА – компетентный веб-интегратор. Мы работаем со сложными веб-системами и не боимся трудных задач. Задачи интеграции – наша специализация, какими бы сложными они не были. Если вы готовы бросить нам вызов, заполните форму ниже.
Результат
Над проектом работали
Андрей П.
Александр П.
Александр Р.
Дина Ш.

Статьи по теме

23.11.2022
Развитие B2B-платформы: готовые функции, задачи в работе и планы на будущее В этой статье расскажем о текущем развитии B2B-Платформы — нашего инструмента для автоматизации работы с оптовыми клиентами. Что сделали, что в работе, что...
03.11.2022
Тюнинг HR процессов в компании Брайт Вэй Компания Брайт Вэй - динамично развивающаяся группа компаний, стратегия которой включает реализацию многих значимых проектов в фармацевтической отрасли Рос...
31.10.2022
Создание маркетплейса для корпоративных заказов на производственном предприятии. Битрикс + SAP под капотом.Наш клиент — лидер производства драгоценных металлов в России. Предприятие расположено в столице региона, где добывается больше всего драгоценных металлов в стр...
25.10.2022
Цифровая дистрибуция и автоматизация сбыта Преимущества автоматизации системы сбыта Любой бизнес-процесс — набор шагов, из комбинации которых строится работа компании. Сбыт — пример критически ва...
05.10.2022
Личный кабинет подрядчика: ускорение процесса сбора документов работников на объектах компании ЕВРАЗ в 15 раз Получение документации от подрядчика – долговременно, сложно, утомительно Подрядчикам приходится пройти настоящее бюрократическое испытание, чтобы получить д...
30.09.2022
Кейс: Комплексный подход в фармацевтическом онлайн-маркетинге и рост дохода аптеки на 45% Наш клиент «Добрая аптека» — аптечная сеть в Архангельской области и НАО. У Доброй аптеки десятки аптечных точек на Севере России и сайт с функциями интерн...

Мы работаем по одному из двух форматов:

  • аренда команды (от 2 человек, не менее 3 месяцев);
  • итерации с фиксированной ценой (1-3 месяца длительностью).

ИНТЕРВОЛГА предоставляет:

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

Для доработок и развития мы предлагаем формат 100 часов в месяц. Что можно сделать за это время:

  • новые нетиповые страницы или раздел;
  • 2 отчета с индивидуальными настройками;
  • 3-5 веб-сервисов интеграции;
  • замудренный калькулятор и т.п.

Поддержка «чтобы все работало как часы» стоит 45 тысяч рублей в месяц и описана тут.