Как разработать сайт транспортной компании на 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-блоки. Свяжитесь с нами для аудита вашего бизнес-процесса. Закажите консультацию — мы пришлём коммерческое предложение с оценкой.







