Разработка сайта автодилера на 1С-Битрикс
Мы разрабатываем сайты автодилеров на 1С-Битрикс, которые конвертируют посетителей в заявки. Наша команда — более 12 лет опыта в разработке на Битрикс, реализовано свыше 80 проектов для автодилеров. Сайт автодилера — не просто каталог, а сложный инструмент подбора. Посетитель не добавляет машину в корзину — он подбирает, сравнивает, считает кредит, записывается на тест-драйв. Средняя сессия на дилерском сайте — 6–9 минут, 3–4 переключения фильтров, 2–3 открытых карточки. Если фильтр по марке-модели тормозит, фотографии грузятся по одной, а калькулятор кредита требует перезагрузки — посетитель уходит на auto.ru. Мы строим архитектуру, которая не уступает агрегаторам по скорости, но остаётся управляемой из админки Битрикса.
Архитектура каталога: новые и с пробегом
Первое решение — хранить новые и подержанные автомобили в одном или разных инфоблоках. Один инфоблок с разделами по типам — подходит мультибрендовому дилеру до 2000 позиций: 80% свойств совпадают, пустые свойства не раздувают таблицу b_iblock_element_property. Два инфоблока — оправданы, когда новые автомобили формируются через конфигуратор (марка → модель → комплектация), а б/у — конкретные VIN-экземпляры. Рекомендуем для среднего дилера (500–3000 авто): инфоблок «Автомобили» с разделами «Новые» и «С пробегом», Highload-блоки «Марки», «Модели», «Поколения», «Комплектации», инфоблок «Акции».
Свойства автомобиля — минимум 40 полей. Ключевые для фильтрации и агрегаторов:
| Свойство | Код | Тип | Индексация |
|---|---|---|---|
| Марка | BRAND | S:Highload | Фасетный индекс |
| Модель | MODEL | S:Highload | Фасетный индекс |
| Год выпуска | YEAR | N (число) | Фасетный индекс |
| Цена | PRICE | N | Фасетный индекс |
| Пробег | MILEAGE | N | Фасетный индекс |
| Тип двигателя | ENGINE_TYPE | L (список) | Фасетный индекс |
| Объём двигателя | ENGINE_VOLUME | N | Фасетный индекс |
| Коробка передач | TRANSMISSION | L (МКПП, АКПП, робот, вариатор) | Фасетный индекс |
| Привод | DRIVE | L | Фасетный индекс |
| Кузов | BODY_TYPE | L | Фасетный индекс |
| Цвет | COLOR | S | Фасетный индекс |
| VIN | VIN | S | Нет (точное совпадение) |
| Статус | STATUS | L | Фасетный индекс |
| Фото | PHOTOS | F (множественное) | Нет |
| 360 экстерьер | SPIN_360_URL | S | Нет |
| Панорама салона | INTERIOR_PANORAMA | S | Нет |
Почему каскадная фильтрация критична для каталога?
Штатный bitrix:catalog.smart_filter показывает все значения всех свойств одновременно. Пользователь выбирает марку BMW — а в списке моделей висят Camry, Ceed. Это ломает UX. Нужна каскадная фильтрация: выбрал марку — модели пересчитались, выбрал модель — поколения пересчитались.
Вариант 1: кастомный AJAX-контроллер. Отдельный endpoint /api/catalog/filter-values/:
class FilterValuesController extends \Bitrix\Main\Engine\Controller
{
public function getModelsAction(int $brandId): array
{
$models = [];
$res = \CIBlockElement::GetList(
[],
['IBLOCK_ID' => CAR_IBLOCK_ID, 'ACTIVE' => 'Y', 'PROPERTY_BRAND' => $brandId],
['PROPERTY_MODEL' => 'CNT'],
false,
['PROPERTY_MODEL']
);
while ($row = $res->Fetch()) {
$models[] = ['id' => $row['PROPERTY_MODEL_VALUE'], 'count' => $row['CNT']];
}
return $models;
}
}
На фронте — BX.ajax.runAction, обновление select модели через Choices.js или Tom Select. Вариант 2: предзагрузка JSON-дерева зависимостей — быстрее, но не учитывает актуальный сток. Комбинация: предзагрузка дерева + AJAX-пересчёт count при изменении любого фильтра — оптимальный UX.
Для range-ползунков (цена, пробег, год) — bitrix:catalog.smart_filter отдаёт MIN/MAX, на фронте noUiSlider, AJAX через bitrix:catalog.section.
Как избежать ошибок при генерации XML-фидов?
Авто-агрегаторы — основной источник трафика. У каждого свой XML-формат и набор обязательных полей. auto.ru использует формат cars.xml:
<cars>
<car>
<mark_id>BMW</mark_id>
<folder_id>X5</folder_id>
<modification_id>xDrive30d</modification_id>
<body_type>ALLROAD_5_DOORS</body_type>
<year>2024</year>
<run>0</run>
<color>ЧЕРНЫЙ</color>
<transmission>AUTOMATIC</transmission>
<engine_type>DIESEL</engine_type>
<engine_volume>3.0</engine_volume>
<price>7890000</price>
<currency>RUR</currency>
<vin>WBAJC51090B123456</vin>
<unique_id>car_12345</unique_id>
<images>
<image>https://site.ru/upload/cars/12345/photo1.jpg</image>
</images>
</car>
</cars>
Критические поля: mark_id и folder_id должны совпадать со справочником агрегатора. Мы строим Highload-блок FeedMapping для трансляции значений (АКПП → AUTOMATIC для auto.ru, «Автоматическая» для Avito). Генерация — абстрактный класс BaseFeedGenerator, конкретные реализации для каждого формата. Агент запускается раз в 30–60 минут, файлы в /upload/feeds/. Перед перезаписью — валидация XSD-схемой, при ошибке — уведомление менеджеру.
Сравнение автомобилей
Пользователь добавляет до 4 машин в сравнение через кнопку в каталоге. ID хранятся в localStorage (неавторизованные) или в Highload-блоке UserCompare (авторизованные). Компонент загружает свойства по массиву ID, рендерит таблицу с подсветкой различий.
Калькуляторы trade-in и кредита
Trade-in: форма оценки — марка, модель, год, пробег, состояние. На клиенте JavaScript берёт базовую цену из Highload-блока TradeInPrices и применяет коэффициенты. Точная оценка — после осмотра. Кредитный калькулятор — аннуитетная формула с ползунками, ставки из Highload-блока «Банки-партнёры».
Интеграция с 1С и складской учёт
Синхронизация через CommerceML (штатный обмен с 1С, доработка маппинга свойств) или REST API 1С (HTTP-сервис, обновления каждые 15–30 минут). Ключ — VIN. Подробнее — в документации Битрикс (CommerceML).
360-обзор и визуальный контент
360-обзор — набор 36–72 фото по кругу, библиотека SpriteSpin. Панорама салона — сферическое фото, просмотр через Pannellum.js. Файлы хранятся в /upload/cars/{ID}/360/.
Запись на тест-драйв и сервис
Форма записи — через bitrix:form.result.new или REST API Битрикс24 (crm.lead.add с источником TEST_DRIVE). Клиент получает SMS-подтверждение. Запись на сервис — аналогично с выбором вида работ.
SEO и Schema.org
Каждая карточка — посадочная страница. Шаблоны SEO: title «Купить #BRAND# #MODEL# #YEAR# — #CITY# | Дилер», description с характеристиками. Микроразметка Schema.org Vehicle + Offer:
{
"@context": "https://schema.org",
"@type": "Vehicle",
"name": "BMW X5 xDrive30d",
"brand": {"@type": "Brand", "name": "BMW"},
"model": "X5",
"vehicleModelDate": "2024",
"mileageFromOdometer": {
"@type": "QuantitativeValue",
"value": "0",
"unitCode": "KMT"
},
"fuelType": "Diesel",
"vehicleTransmission": "Automatic",
"color": "Black",
"vehicleIdentificationNumber": "WBAJC51090B123456",
"image": ["https://site.ru/upload/cars/12345/photo1.jpg"],
"offers": {
"@type": "Offer",
"price": "7890000",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "AutoDealer",
"name": "Название дилера"
}
}
}
Что входит в проект
- Архитектурная документация (инфоблоки, Highload-блоки, маппинг свойств).
- Доступы к админке, CRM, хостингу.
- Обучение менеджеров работе с каталогом и фидами.
- Техническая поддержка на 30 дней после запуска.
- Исходный код и инструкции по развёртыванию.
Этапы и сроки
| Масштаб | Сроки |
|---|---|
| Монобрендовый дилер, до 200 авто, базовый фильтр | 6–8 недель |
| Мультибрендовый дилер, 500–2000 авто, фиды + 1С | 10–14 недель |
| Дилерская сеть, 3000+ авто, мультисайтовость, CRM | 14–24 недели |
Сроки не включают фотосъёмку и подготовку 360-контента — это параллельный процесс.
Оценим ваш проект и предложим оптимальное решение. Свяжитесь с нами для консультации.







