Як розробити сайт транспортної компанії на 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 секунди, а вартість підтримки значно скоротилася — за рахунок усунення надлишкових запитів та агентів.
Наш підхід: проектуємо інфоблоки до першого рядка коду. Окремі інфоблоки під сутності (товари, категорії, бренди), властивості-довідники через HL-блоки, торгові пропозиції для SKU. Це закладає продуктивність на роки вперед. Якщо хочете отримати попередній аудит вашої схеми інфоблоків — зв'яжіться з нами, розберемо типові помилки та надамо рекомендації.
Чому 1С-Бітрікс вигідніший за альтернативи?
Вибір CMS диктується не уподобаннями, а бізнес-завданнями. Ось ключові аргументи:
- Нативний обмін з 1С — модуль
catalog.import.1c забезпечує двосторонній обмін товарами, цінами, залишками та замовленнями через CommerceML. Без сторонніх модулів. Це в 5 разів швидше, ніж розробка власного обміну на OpenCart або WordPress. Економія на інтеграції — до 200 000 грн порівняно з кастомними рішеннями.
- Проактивний захист — модуль
security включає WAF, контроль цілісності файлів, захист від SQL-ін'єкцій, двофакторну автентифікацію. Для проєктів з вимогами ФСТЭК — сертифіковане рішення (згідно з Wikipedia, це стандарт для корпоративних систем).
- Модульна архітектура — підключаємо лише потрібні модулі:
iblock, catalog, sale, search. Менше модулів — менше запитів до БД на кожен хіт.
- Регулярні патчі — вендор випускає security-патчі, закриваючи вразливості швидше, ніж open-source проєкти (середній час виправлення CVE — 2 тижні). Офіційна документація по модулях доступна на сайті розробника.
Що дають HL-блоки і як ми прискорюємо каталог
Highload-блоки — це альтернатива розширеним властивостям інфоблоків, коли список значень може зростати до тисяч записів. Типовий приклад: виробники, країни, кольори. Якщо зберігати їх як властивості-списки в інфоблоці, кожна фільтрація викликає повне сканування таблиці b_iblock_property_enum. З HL-блоками вибірка йде по індексу — час відповіді фільтра знижується з 1–2 секунд до 50 мс. Продуктивність HL-блоків у 8 разів вища за властивості-списки інфоблоків. Ми використовуємо 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.
Типові помилки при проектуванні інфоблоків
- Один інфоблок на всі сутності замість окремих під товари, категорії, бренди.
- Використання властивостей-списків замість HL-блоків для довідників з великою кількістю записів.
- Відсутність індексів на полях, що використовуються у фільтрації каталогу.
- Нехтування тегованим кешуванням — призводить до скидання всього кешу при зміні одного елемента.
Гарантія та підтримка
Ми працюємо з 1С-Бітрікс 12+ років, реалізували 500+ проєктів. У штаті сертифіковані розробники. Фіксована вартість у договорі — без сюрпризів. Гарантійний період покриває помилки коду. Після — абонентські пакети з SLA (час реакції — 2 години, рішення — 8 годин). Моніторинг доступності 24/7, алерти в Telegram. За потреби отримайте попередній аудит — зв'яжіться з нами через форму на сайті або напишіть у чат, відповімо протягом години. Замовте розробку під ключ — ми спроєктуємо інфоблоки, інтегруємо 1С і розженимо каталог. Якщо вже є сайт на іншій CMS — замовте аудит продуктивності та міграцію на Бітрікс.