![](https://www.intervolga.ru/upload/resize_cache/iblock/91b/1600_600_2/8dqr9rd52vphq3ehrxrnoh0t08n1nwan.jpg.webp?w=1920)
Настройка многосайтовости и интеграций для дистрибьютора серверного оборудования MARVEL
Сайты
Немного о Marvel и его прошлом
Компания «Марвел-Дистрибуция» является официальным дистрибьютором серверного оборудования производителей Hewlett Packard Enterprise и Lenovo. Основанная в 1991 году «Марвел-Дистрибуция» на сегодняшний день является одним из крупнейших широкопрофильных IT-дистрибьюторов на территории России и стран СНГ.На момент обращения в ИНТЕРВОЛГУ у компании уже был сайт, построенный на базе React. Сайт был быстрый и отзывчивый, но обладал одним существенным недостатком для интернет-магазина – не индексировался поисковыми системами.
Новые горизонты для Marvel
Наша задача была в кратчайшие сроки переехать на Битрикс, настроив многосайтовость и интеграции с базами данных:- c каталогом продукции Hewlett Packard Enterprise;
- c каталогом продукции Lenovo;
- c общим каталогом.
Доработок публичной части было немного: изменить верстку в некоторых местах, сверстать несколько новых блоков, ограничить или изменить выводимую информацию.
Изюминка проекта — источник данных. Предыдущая версия сайта тянула данные из самописной учетной системы (УС) в режиме реального времени. Логика работы Битрикс, все стандартные компоненты и возможности системы предполагают хранение данных в БД сайта. Поэтому запрос данных в режиме реального времени не подходит для Битрикс.
Нужно было реализовать обмен данными в фоновом режиме. Все данные мы логически разбили на сущности. Например, данные о городах, с которыми работает сайт, относятся к сущности «Города». Кстати о городах, их также пришлось загружать из УС, поэтому довольно мощная система местоположений Битрикса осталась в стороне. Еще одной сущностью обмена являются поставщики. И с ними связана, пожалуй, самая серьезная доработка публичной части сайта – реализовать ограничения платежных систем и служб доставки от поставщиков. Подробнее об ограничениях можно почитать в официальной документации.
![Настройка многосайтовости – Hewlett Packard Enterprise](/upload/medialibrary/91f/91f5be4ea3fb339d6a2c2db2d226f9ae.png.webp)
![Настройка многосайтовости – серверные хренения](/upload/medialibrary/d25/d25c67ffa4f5e52ee92645b7b55d63ec.png.webp)
![Настройка многосайтовости – Lenovo](/upload/medialibrary/27c/27c69b27a95d25c2063a8537e186d8cd.png.webp)
![Настройка многосайтовости – оформление заказа в Lenovo](/upload/medialibrary/44f/44f593313bf807864ecbc72e73dbc530.png.webp)
Фундамент нового Marvel
![Настройка многосайтовости и концепции обмена Marvel](/upload/iblock/5b9/5b954a08d816c2164337e6c56243b74e.png.webp)
- городов;
- поставщиков;
- каталога (разделы, свойства, товары с ценами);
- заказов;
- данных формы «Задать вопрос».
Типы обмена
Импорт сущностей мы разделили логически на первичный и повторный. При первичном импорте сущности ее данные на сайте отсутствуют. Все элементы сущности будут выгружены на сайт. При повторном импорте – элементы, которых еще нет на сайте будут добавлены, а которых нет в ответе API – удалены.
Для элементов сайта мы храним хэш основных значимых полей. Это позволяет нам отслеживать изменения данных и не обновлять элементы в случае отсутствия изменений. Исходя из наличия хеша мы также разделяем импорт на «полный» и «только изменения».
Импорт разделов
Особняком создания многосайтовости стоит импорт разделов. Дело в том, что у заказчика было требование редактировать разделы на сайте: как информацию и описание, так и иерархию. Если бы мы выполняли обмен разделами по вышеописанному сценарию, это бы привело к огромной неразберихе. Поэтому разделы импортируются по особому сценарию:
- при первичном импорте на сайте создается полная копия дерева разделов.
- при повторном импорте изменения существующих разделов не обрабатываются, разделы которых нет в выгрузке – деактивируются, а новые разделы попадают в служебный неактивный раздел без сохранения иерархии.
Расписание
Обмен с УС выполняется с помощью агентов по расписанию во время наименьшей активности посетителей на сайте. Обмен сущностей происходит в строго установленном порядке. Сначала импорт независимых сущностей «Города» и «Поставщики», далее – импорт сущностей каталога «Разделы», «Свойства», «Товары», и в конце – экспорт «Заказов». Обмен осуществляется поочередно для каждого сайта.
![Гаджет обмена (обмен не выполняется)](/upload/medialibrary/416/416b0b38ebc2d3658caa42e78456df7e.png.webp)
Гаджет позволяет отслеживать текущий обмен:
- время начала и продолжительность;
- настройки;
- ошибки;
- текущий прогресс по сущностям.
Ну и вишенка на торте – блок управления обменом. Он позволяет выбирать сущности обмена, задавать настройки и принудительно запускать обмен.
Из особенностей – сущность каталога мы рассматриваем как единое целое, не позволяя импортировать разделы, товары или свойства по отдельности, т.к. это может привести к неконсистентному состоянию базы данных.
Из настроек имеется возможность активировать режим полной выгрузки и включить/отключить импорт изображений. В режиме полной выгрузки изменения не проверяются: это увеличивает время обмена, но может оказаться полезным в случае ошибок данных на сайте. Импорт изображений занимает немалую доля времени обмена, так что в случае необходимости, можно выполнять обмен без них.
Логирование
Основные данные об обмене, отображаемые в гаджете мы храним в отдельной таблице, а для логирования ошибок используем удобный инструмент «Журнал событий», куда пишем ошибки обращения к API, ошибки добавления элементов в БД сайта, ошибки экспорта заказов и прочее.
Гаджет имеет одну единственную настройку – ID сайта, с которым он работает. Соответственно, для каждого сайта – свой гаджет. При таком режиме гаджет занимает всю площадь экрана и позволяет отслеживать всю необходимую информацию на 1 экране.
![Гаджет обмена (обмен выполняется)](/upload/medialibrary/247/247333749508d90622d3a4ed7045f218.png.webp)
Сложности и риски
Интеграция – сложный тип задач. Требуется соединить две системы, к одной из которых, как правило, нет доступа, ее нельзя изменить и приходится довольствоваться тем, что есть. С этой проблемой мы столкнулись при импорте свойств. Структура данных свойств сильно разнилась с тем, как это устроено в Битрикс. Если для получения данных большинства сущностей нам хватало 1 запроса, то здесь потребовалось несколько. Эта особенность не была замечена на раннем этапе. Не было и возможности доработать API в рамках установленных сроков. Пришлось мириться с тем, что есть. Как результат – немного увеличилось время на реализацию импорта свойств, а также сам импорт свойств выполняется дольше, чем могло быть.Еще один момент – импорт изображений. API не предоставляет информации об изменениях изображений, поэтому не было возможности в полной мере реализовать отслеживание их изменений. Как результат – импорт выполняется немного дольше, чем могло быть.
В целом – это не существенно, т.к. обмен все равно происходит в фоновом режиме в момент наименьшей пользовательской активности.
Заключение
Описанный проект – один из немногих, где недостаточно простого умения разрабатывать сайты. В подобных проектах мы всегда уделяем время предпроектной аналитике, построению архитектуры системы, проектированию структуры данных.ИНТЕРВОЛГА – компетентный веб-интегратор. Мы работаем со сложными веб-системами и не боимся трудных задач. Задачи интеграции – наша специализация, какими бы сложными они не были. Если вы готовы бросить нам вызов, заполните форму ниже.
Результат
Над проектом работали
Статьи по теме
![](https://www.intervolga.ru/upload/resize_cache/iblock/b21/470_200_2/rs06edz4tsnd84peh9ewid244l8xb823.jpg.webp?w=1920)
![](https://www.intervolga.ru/upload/resize_cache/iblock/da8/470_200_2/v8j0lxpsl0awc3vc1o8qwdaz05v00pvn.jpg.webp?w=1920)
![](https://www.intervolga.ru/upload/resize_cache/iblock/4be/470_200_2/t6wgzearlyagcpokj59zmjtx6dfnwg0p.jpg.webp?w=1920)
![](https://www.intervolga.ru/upload/resize_cache/iblock/211/470_200_2/9nywq3jc4b1z786k822f2123kmp3bo8y.jpg.webp?w=1920)
![](https://www.intervolga.ru/upload/resize_cache/iblock/dfb/470_200_2/b80dhnr71r454q1nxq5wfui58z8cl96h.png.webp?w=1920)
![](https://www.intervolga.ru/upload/resize_cache/iblock/725/470_200_2/mqourwrxaxdlznvdtm8h13xrf3t8ge65.jpg.webp?w=1920)
Мы работаем по одному из двух форматов:
- аренда команды (от 2 человек, не менее 3 месяцев);
- итерации с фиксированной ценой (1-3 месяца длительностью).
ИНТЕРВОЛГА предоставляет:
- регулярные онлайн-планерки с заказчиком;
- квалифицированных специалистов;
- организованную команду (находятся в одном помещении, что упрощает решение рабочих вопросов);
- полную прозрачность и регулярность отчетов о результатах.
Ключевые услуги:
- нагруженный интернет-магазин;
- личный кабинет;
- оптовые продажи — B2B-платформа;
- маркетплейс;
- технический аудит сайта;
- Битрикс24 — корпоративные HR-порталы;
- Битрикс24 — построение CRM-системы;
- Битрикс24 — личные кабинеты сотрудников;
- Битрикс24 — аудит портала;
- 1С — интеграция с другими системами;
- 1С — доработка системы;
- маркетинг — комплексное интернет-продвижение;
- маркетинг — продвижение для B2B.