Как разработать сайт транспортной компании на 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-блоки. Свяжитесь с нами для аудита вашего бизнес-процесса. Закажите консультацию — мы пришлём коммерческое предложение с оценкой.
Пример кейса: экономия 35% на операционных расходах
Для одной транспортной компании мы автоматизировали расчёт стоимости и обмен с 1С. Ручная обработка заказов сократилась с 4 часов до 20 минут в день. Экономия на операционных расходах достигла 35%.
Как правильно проектировать инфоблоки?
Мы видим десятки проектов, где неправильная структура инфоблоков превращает сайт в тормоз. Типичный сценарий: заказчик просит «каталог товаров». Разработчик создаёт один инфоблок catalog, закидывает туда 15 свойств. Через полгода — 40 свойств, 8 из которых используются только для одной категории. Фильтр тормозит, таблица b_iblock_element_property разрослась до миллионов строк, CIBlockElement::GetList выполняется 3 секунды. Последствия — падение конверсии, потеря клиентов, дополнительные затраты на оптимизацию. В одном проекте после рефакторинга каталога время генерации страницы снизилось с 4,2 до 0,8 секунды, а стоимость поддержки сократилась на 250 000 рублей в год — за счёт устранения избыточных запросов и агентов.
Наш подход: проектируем инфоблоки до первой строки кода. Отдельные инфоблоки под сущности (товары, категории, бренды), свойства-справочники через highload-блоки, торговые предложения для SKU. Это закладывает производительность на годы вперёд. Если хотите получить предварительный аудит вашей схемы инфоблоков — свяжитесь с нами, разберём типовые ошибки и дадим рекомендации бесплатно.
Почему 1С-Битрикс выгоднее альтернатив?
Выбор CMS диктуется не предпочтениями, а бизнес-задачами. Вот ключевые аргументы:
- Нативный обмен с 1С — модуль
catalog.import.1c обеспечивает двусторонний обмен товарами, ценами, остатками и заказами через CommerceML. Без сторонних модулей. Это в 5 раз быстрее, чем разработка собственного обмена на OpenCart или WordPress. Подробнее о формате — в Wikipedia. Экономия на интеграции составляет в среднем 150 000–300 000 рублей по сравнению с кастомными решениями.
- Проактивная защита — модуль
security включает WAF, контроль целостности файлов, защиту от SQL-инъекций, двухфакторную аутентификацию. Для проектов с требованиями ФСТЭК — сертифицированное решение.
- Модульная архитектура — подключаем только нужные модули:
iblock, catalog, sale, search. Меньше модулей — меньше запросов к БД на каждый хит.
- Регулярные патчи — вендор выпускает security-патчи, закрывая уязвимости быстрее, чем open-source проекты (среднее время исправления CVE — 2 недели). Официальная документация по модулям — dev.1c-bitrix.ru.
Что дают HL-блоки и как мы ускоряем каталог
Highload-блоки — это альтернатива расширенным свойствам инфоблоков, когда список значений может расти до тысяч записей. Типичный пример: производители, страны, цвета. Если хранить их как свойства-списки в инфоблоке, каждая фильтрация вызывает полное сканирование таблицы b_iblock_property_enum. С HL-блоками выборка идёт по индексу — время ответа фильтра снижается с 1–2 секунд до 50 мс. Мы используем HLB компонент и кастомные запросы через Bitrix\Highloadblock\DataManager. Это особенно критично для каталогов с 100 000+ товарами.
Из нашей практики — проект интернет-магазина с 500 000 товаров. Стандартный фильтр по бренду выполнялся 4 секунды. Сервер не выдерживал нагрузку в 50 одновременных запросов — страницы падали. Мы перевели справочник брендов в HL-блок, добавили тегированное кэширование на 15 минут и настроили агент для сброса кэша при изменении. После доработки время фильтрации составило 120 мс, средний LCP страницы — 1,8 секунды. Проект работает стабильно без сбоев.
Что входит в разработку сайта на 1С-Битрикс
Каждый проект включает полный комплект документации и артефактов, исключающий потерю знаний после передачи.
-
Техническое задание — user stories, диаграммы инфоблоков, схемы интеграций.
-
Исходный код в Git — с историей коммитов, тегами релизов, правилами ветвления.
-
Административная документация — описание кастомных компонентов, инструкции по разворачиванию, перечень агентов и событий.
-
Обучение сотрудников — до 3 часов вебинара: панель управления, работа с заказами, настройка цен. Записываем, чтобы можно было пересмотреть.
-
Доступ к staging на время разработки — тестируете сами до деплоя на продуктив.
-
Гарантийная поддержка — исправление ошибок кода в течение 30 дней после запуска. Постгарантийные абонентские пакеты с SLA (реакция 2 часа, решение 8 часов).
Наш процесс и технологии
| Тип проекта |
Сроки |
Сложность |
Ключевые особенности |
| Корпоративный сайт |
от 1 месяца |
Средняя |
Каталог, новости, формы, CRM-интеграция |
| Интернет-магазин |
от 2 месяцев |
Высокая |
54-ФЗ, маркетплейсы, обмен с 1С, SKU |
| B2B-портал |
от 3 месяцев |
Очень высокая |
Персональные цены, документооборот, Bizproc |
| Лендинг |
от 2 недель |
Низкая |
LCP < 2с, композитный кеш, статика |
| Многосайтовая структура |
от 1,5 месяцев |
Высокая |
Раздельный контент, общий каталог, hreflang |
Стек: вёрстка mobile-first, тестируем на физических устройствах (iPhone, iPad, Android). Используем BrowserStack для Safari на iOS. Производительность — LCP < 2,5 с, FID < 100 мс, CLS < 0,1. Включаем композитный сайт (composite), CDN, тегированное кэширование, WebP/AVIF, lazy loading. SEO — Schema.org через JSON-LD, автогенерация sitemap.xml модулем seo, canonical и hreflang для мультиязычных версий. robots.txt закрываем /bitrix/ от индексации. CI/CD — Git, автодеплой через GitLab CI, staging. Миграции базы — модуль sprint.migration с версионированием.
Процесс работы:
-
Аналитика — изучаем конкурентов, собираем требования, рисуем прототипы в Figma. На выходе — ТЗ с user stories.
-
Дизайн — UI/UX с дизайн-системой. Компоненты переиспользуются.
-
Разработка — пишем компоненты с кастомными шаблонами в
local/templates/. Бизнес-логику выносим в модули local/modules/.
-
Тестирование — функциональное, кроссбраузерное, нагрузочное (до 1000 запросов). Критичные баги исправляем до запуска.
-
Запуск — деплой на прод, мониторинг через UptimeRobot, алерты в Telegram. Устраняем первые 48 часов.
Интеграции, мультиязычность и редизайн
| Направление |
Сервисы |
| CRM и аналитика |
Битрикс24 (нативная), amoCRM, Roistat, Calltouch, Mindbox |
| Платежи |
ЮKassa, CloudPayments, Тинькофф, Apple Pay, Google Pay |
| Фискализация 54-ФЗ |
АТОЛ, OrangeData — настройка через sale.cashbox |
| Логистика |
СДЭК, Boxberry, ПЭК, Почта России, Яндекс.Доставка |
| Коммуникации |
JivoSite, Carrot Quest, SendPulse |
-
Полная локализация через языковые файлы lang/ и механизм SITE_ID. hreflang для каждой версии. Региональные версии с разными ценами и контентом — определение по IP (main.geo) или ручной выбор. Мультидоменность — единое управление несколькими доменами.
-
Редизайн без потери позиций: аудит производительности (PageSpeed, WebPageTest), SEO (Screaming Frog). Новый шаблон в local/templates/ с сохранением URL-структуры. 301-редиректы только если URL меняется существенно. Обновление ядра, переход на D7 ORM, реструктуризация инфоблоков, миграция через sprint.migration с Git.
Гарантия и поддержка
Мы работаем с 1С-Битрикс 12+ лет, реализовали 500+ проектов. В штате сертифицированные разработчики. Фиксированная стоимость в договоре — без сюрпризов. Гарантийный период покрывает ошибки кода. После — абонентские пакеты с SLA (время реакции — 2 часа, решение — 8 часов). Мониторинг доступности 24/7, алерты в Telegram. Получите консультацию и предварительный расчёт: свяжитесь с нами через форму на сайте или напишите в чат — ответим в течение часа. Закажите разработку под ключ — мы спроектируем инфоблоки, интегрируем 1С и разгоним каталог. Если уже есть сайт на другой CMS — закажите аудит производительности и миграцию на Битрикс.