Автошкола з трьома філіями та 500 учнями на місяць — це потік дзвінків: «чи є місця?», «який розклад?», «коли тест?». Без автоматизації адміністратор витрачає до трьох годин на день тільки на відповіді, а помилки в записі призводять до втрати клієнтів. Наприклад, при 15 філіях та 40 курсах ручне оновлення розкладу займає 2 години щоденно — каскадний онлайн-запис через Highload-блоки скорочує це до нуля. Інтеграція з 1С через CommerceML автоматично синхронізує договори та рахунки, виключаючи подвійні проводки. Ми будуємо сайти на 1С-Бітрікс, які автоматизують запис, тести та документообіг — окупаються за 2-3 місяці за рахунок скорочення ручної праці та зростання конверсії в запис на 25%. Це комплексна розробка сайту автошколи під ключ: від проєктування інфоблоків до кастомних компонентів тестування. Наші рішення перевірені в десятках автошкіл і масштабуються під будь-яку філію.
Як влаштований каталог курсів на інфоблоках?
Основа каталогу — інфоблок «Курси» з типом «Навчання». Кожен елемент відповідає одній програмі підготовки. Властивості елемента:
- Категорія (список): A, A1, B, B1, C, CE, D, DE — за класифікацією водійських посвідчень.
- Тривалість (число): загальна кількість днів програми.
- Години теорії (число): академічні години теоретичної частини.
- Години практики (число): години водіння з інструктором.
- Формат (список): очний, дистанційний, змішаний.
- Філії (прив'язка до елементів): зв'язок з інфоблоком «Філії».
Розділи інфоблоку повторюють категорії — це дає SEO-сторінки виду /kursy/kategoriya-b/ з автоматичною фільтрацією. Для кожного розділу задається власний SEO-шаблон через властивості розділу: title, description, og:image.
Компонент bitrix:catalog.section.list виводить дерево категорій на головній, а bitrix:news.list — картки курсів всередині розділу. Фільтрація за форматом реалізується через bitrix:catalog.smart.filter з AJAX-перезавантаженням без перемальовування сторінки.
Чому Highload-блоки для онлайн-запису?
Запис учня на курс — це не просто веб-форма. Потрібно показати доступні групи, дати початку, кількість вільних місць та прив'язку до конкретної філії. Highload-блок «Групи» містить поля:
| Поле | Тип | Призначення |
|---|---|---|
| UF_COURSE_ID | Прив'язка до елемента | Зв'язок з курсом з інфоблоку |
| UF_BRANCH_ID | Прив'язка до елемента | Філія |
| UF_DATE_START | Дата | Дата початку занять |
| UF_DATE_END | Дата | Планова дата закінчення |
| UF_MAX_STUDENTS | Число | Максимум учнів у групі |
| UF_CURRENT_COUNT | Число | Поточна кількість записаних |
| UF_STATUS | Список | Набір відкрито / закрито / завершено |
| UF_SCHEDULE | Рядок | Дні тижня та час (ПН-СР-ПТ 18:00) |
Highload-блок обрано замість звичайного інфоблоку через продуктивність: при 15+ філіях і десятках груп одночасно вибірка через ORM D7 працює в рази швидше.
Форма запису працює каскадно: учень обирає категорію → філію → бачить лише групи зі статусом «Набір відкрито» та UF_CURRENT_COUNT < UF_MAX_STUDENTS. Після відправлення заявки обробник на події OnAfterHLBlockElementAdd інкрементує лічильник і, якщо група заповнена, автоматично перемикає статус.
Розклад занять
Розклад реалізується двома інфоблоками: «Розклад теорії» та «Розклад водіння». Теорія прив'язана до групи: фіксовані дні та час, однакові для всіх учнів групи. Відображається таблицею в особистому кабінеті та на сторінці групи.
Водіння — індивідуальне. Інфоблок «Слоти водіння» містить прив'язку до інструктора, дату, час початку та закінчення, статус (вільний / заброньований / проведений). Учень в особистому кабінеті бачить доступні слоти свого інструктора і бронює через AJAX-запит до кастомного контролера.
Особистий кабінет учня
Особистий кабінет будується на компоненті bitrix:main.profile з кастомним шаблоном та додатковими вкладками:
- Мій курс — інформація про групу, інструктора, дати.
- Розклад — теорія (загальна таблиця) + водіння (персональні слоти).
- Прогрес — кількість пройдених занять теорії, годин водіння, результати внутрішніх тестів.
- Оцінки — результати пробних екзаменів.
- Документи — договір, квитанції про оплату (файли з властивостей користувача).
Авторизація — стандартний модуль main з SMS-підтвердженням через sms.ru або підключений SMSC-шлюз.
Дані прогресу та оцінок агрегуються з Highload-блоків результатів тестів через D7 API. Вкладки реалізовані через JavaScript-роутинг та AJAX-підвантаження контенту.
Як захищено тест ПДР?
Тестування ПДР — ключова функція, заради якої учні повертаються на сайт щодня. Стандартні модулі Бітрікс (опитування, веб-форми) для цього не підходять: немає таймера, немає рандомізації, немає розбивки за темами з підрахунком статистики.
Архітектура зберігання питань
Інфоблок «Питання ПДР» з розділами за темами: «Проїзд перехресть», «Дорожні знаки», «Сигнали світлофора», «Перша допомога» тощо (всього 40 тем за структурою екзамену ДАІ).
Властивості елемента:
- Текст питання — детальний опис елемента (з підтримкою зображень через візуальний редактор).
- Зображення — картинка дорожньої ситуації (властивість типу «Файл»).
- Варіант 1–5 — рядкові властивості для відповідей.
- Правильна відповідь — число (номер варіанту).
- Пояснення — текстова властивість з розбором правильної відповіді та посиланням на пункт ПДР.
- Складність — список (легкий / середній / складний).
- Білет — число (номер офіційного екзаменаційного білета, 1-40).
- Номер у білеті — число (позиція питання, 1-20).
Кастомний компонент тестування
Компонент atlas:pdd.test працює в трьох режимах:
-
Режим «Екзамен» — 20 питань з різних тем, 20 хвилин на весь білет. Компонент обирає питання методом
CIBlockElement::GetListз фільтром за номером білета або формує випадковий набір черезRAND()вSORT. Таймер реалізовано на клієнті (JavaScript, countdown), але контрольний час фіксується на сервері в сесії — при перезавантаженні сторінки таймер продовжує з того ж моменту. -
Режим «За темами» — учень обирає тему, отримує всі питання розділу у випадковому порядку. Обмеження за часом немає. Після кожної відповіді показується пояснення.
-
Режим «Марафон» — всі 800 питань підряд. Прогрес зберігається в Highload-блоці, щоб можна було продовжити з будь-якого пристрою після авторизації.
Збереження та статистика
Результати кожної спроби записуються в Highload-блок «Результати тестів»:
| Поле | Тип | Зміст |
|---|---|---|
| UF_USER_ID | Число | ID користувача |
| UF_MODE | Список | Екзамен / тема / марафон |
| UF_TOPIC_ID | Число | ID розділу (для режиму «За темами») |
| UF_TICKET_NUM | Число | Номер білета (для режиму «Екзамен») |
| UF_CORRECT | Число | Кількість правильних відповідей |
| UF_TOTAL | Число | Загальна кількість питань |
| UF_TIME_SPENT | Число | Витрачений час у секундах |
| UF_ANSWERS | Рядок | JSON з деталізацією по кожному питанню |
| UF_CREATED | Дата/час | Коли пройдено тест |
На підставі цих даних в особистому кабінеті будується аналітика: відсоток правильних відповідей за темами, динаміка за останній тиждень, слабкі теми (де відсоток нижче 80%). Для візуалізації використовується Chart.js, дані підтягуються AJAX-запитом до контролера D7.
Механіка відповіді
Фронтенд відправляє AJAX-запит з ID питання та номером обраного варіанту. Контролер перевіряє відповідь на сервері (номер правильного варіанту ніколи не віддається клієнту до відповіді) і повертає результат: правильно/неправильно, текст пояснення, посилання на пункт ПДР. Це виключає підглядання через DevTools — відповіді перевіряються тільки серверно.
Для захисту від накручування статистики введено дебаунс-перевірку: якщо між відповідями минуло менше 2 секунд, результат не зараховується (бот або автоклікер). Гарантуємо, що тестова система пройшла навантажувальне тестування на 500 одночасних користувачів і зберігає коректність даних.
Відгуки випускників
Інфоблок «Відгуки» з обов'язковою премодерацією (WF_STATUS_ID). Властивості: ім'я, фото, категорія (на яку складав), текст, оцінка (1-5), дата закінчення навчання. На сторінці курсу виводяться тільки відгуки з прив'язкою до відповідної категорії через bitrix:news.list з фільтром за властивістю.
Додатково реалізовано віджет збору відгуків: учневі через 7 днів після завершення курсу надходить email з посиланням на форму. Відправка через bitrix:iblock.element.add.form з кастомним шаблоном.
Етапи робіт
| Етап | Зміст | Термін |
|---|---|---|
| Аналітика | Структура курсів, карта філій, вимоги до тестування | 5–7 днів |
| Проєктування | Прототипи, структура інфоблоків, ER-схема Highload-блоків | 5–7 днів |
| Дизайн | UI-kit, макети ключових сторінок, адаптив | 10–14 днів |
| Верстка та інтеграція | Шаблони компонентів, каталог курсів, онлайн-запис | 15–20 днів |
| Компонент тестування | Розробка atlas:pdd.test, наповнення бази питань |
10–14 днів |
| Особистий кабінет | Профіль, розклад, прогрес, аналітика | 7–10 днів |
| Тестування та запуск | QA, навантажувальне тестування тестів, перенесення на продакшен | 5–7 днів |
Загальний термін — 8–11 тижнів за умови, що база питань ПДР надана замовником у структурованому вигляді (Excel/CSV). Якщо потрібне ручне введення 800 питань із зображеннями — закладайте додатково 2–3 тижні на контент.
Замовте консультацію — уточніть деталі за вашим проєктом.
Що входить у розробку
До результату роботи входить:
- Повна структура інфоблоків та Highload-блоків з міграціями.
- Кастомні компоненти (тестування, запис, розклад).
- Дизайн-макети та адаптивна верстка.
- Інтеграція з платіжними системами (ЮKassa, Сбер) та ОФД.
- Навчання адміністраторів та передача інструкції.
- Підтримка протягом 30 днів після запуску.
Економія на адміністративній роботі суттєво знижує операційні витрати. Автоматизація дозволяє знизити витрати на рекламу за рахунок вбудованих SEO-сторінок курсів.
Отримайте консультацію та оцініть економію для вашого бізнесу. Ми маємо підтверджений досвід: сертифіковані спеціалісти 1С-Бітрікс з 10+ роками в продакшені.







