Розробка сайту автодилера на 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-контенту — це паралельний процес.
Приклад економії з нашим рішенням
Завдяки правильному налаштуванню фільтрів та інтеграції з агрегаторами наші клієнти отримують у середньому на 30% більше заявок порівняно з типовими дилерськими сайтами.Оцінимо ваш проєкт і запропонуємо оптимальне рішення. Зв'яжіться з нами для консультації. Ми гарантуємо професійний підхід та сертифіковану команду зі стажем понад 12 років.







