Розробка сайту автомийки на 1С-Бітрікс
Сайт автомийки вирішує одну конкретну задачу — завантажити боксі на максимум. Клієнт повинен за 40 секунд знайти потрібну послугу, побачити вартість для свого класу авто і записатися на вільне час. Все інше — другорядно.
На 1С-Бітрікс ця задача закривається зв'язком інфоблоків каталогу послуг, Highload-блоків розписання і модуля sale для абонементів. Розберімо архітектуру детально.
Каталог послуг з ціноутворенням за класом авто
Послуги автомийки — не плаский список. Мийка кузова седана і мийка кузова позашляховика коштують по-різному. Тому стандартний інфоблок з єдиною властивістю «Ціна» не працює.
Структура інфоблоку «Послуги»:
- Назва — мийка кузова, хімчистка салону, полірування, детейлінг, нанокераміка
- Категорія — експрес, стандарт, преміум (властивість-довідник)
- Тривалість — час виконання в хвилинах (числова властивість)
- Опис процесу — що саме входить, які матеріали використовуються
Ціноутворення реалізується через торгові пропозиції (SKU). Кожна пропозиція — клас авто: малий (седан B-класу), середній (кросовер), великий (позашляховик/мікроавтобус). У кожного SKU своя ціна. Клієнт на сайті вибирає клас авто один раз — фільтр запам'ятовується в сесії і підставляє потрібні ціни по всьому каталогу.
Для комплексних послуг (детейлінг, передпродажна підготовка) додається властивість «Склад» — прив'язка до інших елементів інфоблоку типу E. Це дозволяє показати, що детейлінг-пакет включає полірування кузова, хімчистку салону і обробку пластику, з автоматичним розрахунком загальної тривалості.
Онлайн-запис: розписання боксів через Highload-блоки
Це ядро сайту автомийки. Реалізація через стандартні інфоблоки занадто повільна — при 6 боксах і 30-хвилинних слотах за день накопичується ~180 записів. За місяць — більше 5000. Highload-блок справляється з цим обсягом без деградації.
Highload-блок «Розписання»:
| Поле | Тип | Призначення |
|---|---|---|
| UF_BOX_ID | Ціле число | ID бокса (1-6) |
| UF_DATE | Дата | Дата запису |
| UF_TIME_START | Рядок | Початок слота (08:00, 08:30...) |
| UF_TIME_END | Рядок | Кінець слота |
| UF_SERVICE_ID | Ціле число | Прив'язка до елемента інфоблоку послуг |
| UF_STATUS | Список | free / booked / in_progress / done |
| UF_CLIENT_PHONE | Рядок | Телефон клієнта |
| UF_CAR_CLASS | Список | Клас авто |
| UF_ORDER_ID | Ціле число | Прив'язка до замовлення sale (для абонементів) |
Логіка формування сітки. При відкритті сторінки запису компонент отримує поточну дату, робить вибірку з Highload-блоку по UF_DATE і UF_BOX_ID, будує сітку «бокс × час». Вільні слоти — кліабельні, зайняті — сірі. Тривалість послуги визначає, скільки послідовних слотів блокується: якщо полірування займає 90 хвилин, при виборі слота 10:00 автоматично резервуються 10:00, 10:30 і 11:00.
Генерація слотів відбувається cron-агентом (CAgent), який кожну ніч створює слоти на 14 днів вперед. Агент враховує графік роботи мийки (властивості інфоблоку «Настройки») і виключає вихідні/святки.
Захист від подвійного бронювання — при підтвердженні запису перевіряється UF_STATUS обраних слотів в транзакції. Якщо між моментом відображення сітки і натиском «Записатися» слот зайняли — клієнт отримує повідомлення і актуальну сітку.
Після успішної запису спрацьовує обробник події, який відправляє SMS через messageservice і додає угоду в CRM Бітрікс24 (якщо налаштована інтеграція).
Абонементи та програма лояльності
Абонементи реалізуються через модуль sale як товари з типом «послуга». Абонемент на 5 миттям кузова — товар з додатковою властивістю UF_REMAINING (залишок відвідувань) в Highload-блоці «Абонементи клієнтів».
При кожній записі з використанням абонемента значення UF_REMAINING зменшується на 1. Коли залишок досягає 2 — клієнту уходит напоминание о продлении.
Програма лояльності будується на вбудованих накопиціювальних скидках модуля sale. Групи користувачів (Срібло, Золото, Платина) призначаються автоматично за сумою замовлень через обробник OnSaleOrderSaved. Скидка застосовується при оформленні наступної запису.
Технічні моменти
- Адаптивність — 70%+ клієнтів записуються з телефону, стоячи в пробці. Сітка розписання на мобільному відображається горизонтальним свайпом по боксам
- Швидкість — композитний кеш включений для каталогу, розписання завантажується AJAX-запитом до контролера (не кешується)
- Сповіщення — SMS при записі, напоминание за 2 години, запит відгуку через 1 годину після відвідування







