Разработка сайта автодилера на 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-контента — это параллельный процесс. Оценим ваш проект и предложим оптимальное решение. Свяжитесь с нами для консультации.







