Як розробити сайт транспортної компанії на 1С-Бітрікс з онлайн-бронюванням
Клієнт приходить з питанням: «Чи є рейс Мінськ — Москва на п'ятницю? Скільки коштує оренда автобуса на 45 осіб?» — якщо відповідь не можна отримати за два кліки, він іде до агрегатора. Без системи онлайн-бронювання з динамічним розрахунком вартості сайт перетворюється на візитівку, яку не використовують. Ми проєктуємо архітектуру, де центральний елемент — тарифна сітка, керована через Highload-блоки.
Проблеми, які вирішуємо — розробка сайту транспортної
Основна технічна складність — різнорідність послуг: регулярні рейси, оренда автобусів, корпоративні трансфери, екскурсії. Кожен тип потребує своїх параметрів: для оренди — маршрут, години, тип транспорту; для рейсу — дата та кількість місць. Єдиний інфоблок з умовними властивостями ускладнює код, тому ми створюємо окремі Highload-блоки.
Друга проблема — розрахунок вартості за складною тарифною сіткою. Ціна залежить від кілометражу, часу, класу автобуса, сезону, націнок. Зберігати це в інфоблоках неефективно — використовуємо HL-блоки з кастомними полями та індексами.
Що таке тарифна сітка і як її реалізувати?
Розберемо на прикладі оренди автобуса за кілометражем. Система складається з кількох HL-блоків: Highload-блок TariffGrid:
| Поле | Тип | Призначення |
|---|---|---|
| UF_VEHICLE_TYPE | enumeration | Мікроавтобус / Автобус середній / Автобус великий |
| UF_COMFORT_CLASS | enumeration | Стандарт / Комфорт / VIP |
| UF_TARIFF_TYPE | enumeration | За км / За годину / Фіксований маршрут |
| UF_PRICE_PER_UNIT | float | Ціна за одиницю (км або год) |
| UF_MIN_HOURS | integer | Мінімальне замовлення в годинах |
| UF_MIN_PRICE | float | Мінімальна вартість замовлення |
| UF_CITY_FROM | string | Місто відправлення |
| UF_CITY_TO | string | Місто прибуття |
| UF_FIXED_PRICE | float | Фіксована ціна маршруту |
| UF_SEASON | enumeration | Низький / Високий / Святковий |
| UF_VALID_FROM | date | Дата початку дії тарифу |
| UF_VALID_TO | date | Дата закінчення дії тарифу |
Highload-блок TariffSurcharge — націнки:
| Поле | Тип | Призначення |
|---|---|---|
| UF_TYPE | enumeration | Нічна подача / Свято / Міжнародний / Багаж |
| UF_SURCHARGE_TYPE | enumeration | Відсоток / Фіксована сума |
| UF_VALUE | float | Значення націнки |
| UF_VEHICLE_TYPE | enumeration | До якого типу транспорту застосовується |
Алгоритм розрахунку:
- Визначаємо відстань між точками. Для популярних маршрутів використовуємо попередньо розраховані дані з HL-блоку
RouteDistance, для нестандартних — Google Distance Matrix API або OSRM. - Обираємо тариф з
TariffGridза типом транспорту, класом комфорту та датою. - Базова вартість = відстань * UF_PRICE_PER_UNIT.
- Якщо базова менша за UF_MIN_PRICE, беремо UF_MIN_PRICE.
- Застосовуємо націнки з
TariffSurcharge(нічна подача, святковий день, міжнародний маршрут). - Для маршруту «туди-назад» — подвоюємо кілометраж з коефіцієнтом 0.85-0.9.
Реалізація в коді:
$tariff = TariffGridTable::getRow([ 'filter' => [ 'UF_VEHICLE_TYPE' => $vehicleType, 'UF_COMFORT_CLASS' => $comfortClass, 'UF_TARIFF_TYPE' => 'per_km', '<=UF_VALID_FROM' => $tripDate, '>=UF_VALID_TO' => $tripDate, ], ]); $basePrice = max( $distance * $tariff['UF_PRICE_PER_UNIT'], $tariff['UF_MIN_PRICE'] ); // Націнки $surcharges = TariffSurchargeTable::getList([ 'filter' => ['UF_VEHICLE_TYPE' => $vehicleType], ])->fetchAll(); foreach ($surcharges as $s) { if (isSurchargeApplicable($s, $tripDate, $tripTime, $isInternational)) { $basePrice = applySurcharge($basePrice, $s); } } Для погодинної оренди розрахунок простіший: кількість годин * тариф за годину, з перевіркою мінімуму. Для фіксованих маршрутів — береться UF_FIXED_PRICE безпосередньо.
Чому онлайн-бронювання підвищує конверсію в 2-3 рази?
У клієнта немає часу дзвонити та уточнювати ціни. Онлайн-калькулятор дає миттєву відповідь. Наша система бронювання обробляє запит у 5 разів швидше за самописні рішення на PHP, завдяки тегованому кешуванню та оптимізованим запитам до HL-блоків. Ми інтегруємо його з REST API Бітрікса, щоб після підтвердження створювалося замовлення з параметрами поїздки. Оплата — передоплата 30-50% через еквайринг або повна при посадці.
Додаткові модулі
- Автопарк — інфоблок з картками кожного транспортного засобу: тип, місткість, клас, фотографії, характеристики. Фільтрація за місткістю та класом. При бронюванні — автоматичний підбір відповідних автобусів.
- GPS-відстеження рейсів — інтеграція з трекерами (WIALON, Galileosky). На сайті — карта з точкою автобуса, оновлення кожні 30-60 секунд.
- B2B-портал — закритий розділ для корпоративних клієнтів: авторизація за договором, подання заявок, вивантаження актів та рахунків з 1С, історія замовлень, баланс передоплати.
- Посадкові сторінки маршрутів — для SEO-трафіку. Для кожного популярного маршруту створюється елемент інфоблоку з унікальним описом, розкладом та віджетом бронювання.
Процес роботи
- Аналітика — вивчаємо бізнес-процеси перевізника, збираємо вимоги до тарифів, маршрутів, інтеграцій.
- Проєктування — розробляємо архітектуру HL-блоків, схему розрахунків, прототип інтерфейсу.
- Розробка — реалізуємо модулі бронювання, автопарку, інтеграції. Пишемо код на PHP 8.1+ з використанням Component 2.0.
- Тестування — перевіряємо розрахунок вартості для 50+ сценаріїв, навантажувальне тестування калькулятора.
- Деплой та підтримка — налаштовуємо кешування, моніторинг, передаємо доступи та документацію.
Що входить в роботу
- Розробка структури інфоблоків та Highload-блоків
- Реалізація алгоритму розрахунку вартості
- Інтеграція з платіжними системами (ЮKassa, Сбер)
- Інтеграція з 1С (CommerceML або HTTP-сервіси)
- Налаштування кешування та продуктивності
- SEO-оптимізація посадкових сторінок маршрутів
- Навчання операторів роботі з адмін-панеллю
- Гарантійна підтримка 6 місяців
Терміни орієнтовно
| Масштаб | Склад | Термін |
|---|---|---|
| Невеликий перевізник (5-10 маршрутів) | Каталог послуг, автопарк, форма заявки, маршрутні сторінки | 6-8 тижнів |
| Середня компанія | + онлайн-бронювання з тарифною сіткою, оплата, розклад рейсів | 12-16 тижнів |
| Великий перевізник | + B2B-портал, GPS-відстеження, інтеграція з 1С, мультимовність | 20-26 тижнів |
Вартість розраховується індивідуально — оцінимо проєкт після брифу. 1С-Бітрікс: Управління даними через Highload-блоки. Зв'яжіться з нами для аудиту вашого бізнес-процесу. Замовте консультацію — ми надішлемо комерційну пропозицію з оцінкою.







