Розробка сайту фітнес-клубу на 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка сайту фітнес-клубу на 1С-Бітрікс
Складний
від 1 тижня до 3 місяців
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    946
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    732
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1075

Наша команда спеціалізується на розробці сайту фітнес-клубу на 1С-Бітрікс. У цій статті ми розповімо, як спроектувати високонавантажений сайт фітнес-клубу на 1С-Бітрікс, який витримає пікові навантаження. Клієнт заходить на сайт фітнес-клубу в понеділок увечері, обирає заняття, натискає «Записатися» — і бачить «Помилка сервера». Або розклад відкривається через 5 секунд. Архітектура не розрахована на пікові навантаження. Ми — команда інженерів з 8-річним досвідом розробки на 1С-Бітрікс — вирішуємо ці проблеми під ключ. Ми гарантуємо якість: усі наші рішення мають сертифікат 1С-Бітрікс. Проектуємо Highload-структури, налаштовуємо кешування, інтегруємо з платіжними системами та CRM. Оцінимо ваш проєкт за 2 дні, терміни озвучимо після аудиту. Вартість проєкту розраховується індивідуально. Економія при розробці з нашим підходом є значною. Щоб отримати консультацію щодо вашого проєкту, зв'яжіться з нами.

Типове завдання: розклад на тиждень з 300 заняттями, 15 залів, 40 тренерів. Без правильного підходу фільтрація займає 800–1200 мс. Ми переводимо дані в Highload-блоки — плоскі таблиці з індексами. Час фільтрації падає до 20–30 мс. Highload-блоки виграють у інфоблоків у 45 разів за швидкістю фільтрації. Нижче розберемо ключові вузли такого проєкту.

Як спроєктувати розклад під навантаження 5000 відвідувань на день?

Розклад — центральний елемент сайту. Якщо він гальмує, клієнт іде в Telegram-бота конкурента.

Для зберігання розкладу використовуємо HL-блоки. Звичайний інфоблок (EAV-модель) при 300 заняттях, 15 залах і 40 тренерах дає десятки тисяч рядків у таблиці властивостей. Фільтрація за комбінацією «зал + день + тренер + напрямок» — серія JOIN-ів з 800–1200 мс.

Highload-блок — плоска таблиця в MySQL. Один рядок = одне заняття, всі поля — колонки. Фільтрація через звичайні індекси. Для прискорення запитів ми створюємо складені індекси на UF_DATE, UF_HALL_ID та UF_TRAINER_ID.

Структура HL FitnessSchedule:

Поле Тип Призначення
UF_DATE date Дата заняття
UF_TIME_START string Початок (HH:MM)
UF_TIME_END string Закінчення
UF_HALL_ID integer ID залу (зв'язок з HL FitnessHalls)
UF_TRAINER_ID integer ID тренера
UF_DIRECTION_ID integer Напрямок: йога, кросфіт, басейн...
UF_CAPACITY integer Максимум учасників
UF_BOOKED integer Поточна кількість записаних
UF_STATUS enumeration active / cancelled / full
UF_IS_RECURRING boolean Повторюване за шаблоном
UF_TEMPLATE_ID integer Посилання на шаблон розкладу

Для повторюваних занять — окремий HL ScheduleTemplate. Cron-агент раз на тиждень генерує конкретні заняття. Це дозволяє тренеру скасувати конкретне заняття, не ламаючи весь розклад.

Фільтрація на фронті через DataManager::getList():

$result = $entityClass::getList([
    'filter' => [
        'UF_DATE' => $selectedDate,
        'UF_HALL_ID' => $hallId,
        'UF_STATUS' => 'active',
    ],
    'order' => ['UF_TIME_START' => 'ASC'],
]);

На фронті — сітка: по горизонталі зали, по вертикалі часові слоти. AJAX-запити через кастомний REST-ендпоінт.

Чому Highload-блоки виграють у інфоблоків?

При 50 000 записів HL-блок обробляє фільтр за 20 мс, інфоблок — за 900 мс. Різниця в 45 разів — за рахунок відсутності EAV-прошарків і прямих індексів. HL-блоки підтримують SELECT ... FOR UPDATE, що критично для транзакційного запису.

Онлайн-запис з лімітом місць і waitlist

Запис на заняття — транзакційна операція з перевіркою ліміту, конкурентним доступом і механізмом очікування.

Сценарій:

  1. Клієнт натискає «Записатися»
  2. Система перевіряє: UF_BOOKED < UF_CAPACITY
  3. Якщо так — створює запис у HL FitnessBooking, інкрементує UF_BOOKED
  4. Якщо ні — пропонує стати в лист очікування

Конкурентний доступ вирішується транзакцією з блокуванням рядка. Два клієнти одночасно натискають на заняття з одним місцем. Без блокування обидва отримають підтвердження.

Рішення — raw SQL з SELECT ... FOR UPDATE:

$connection = \Bitrix\Main\Application::getConnection();
$connection->startTransaction();

$row = $entityClass::getList([
    'filter' => ['ID' => $scheduleId],
    'select' => ['UF_BOOKED', 'UF_CAPACITY'],
    // FOR UPDATE через raw SQL
])->fetch();

if ($row['UF_BOOKED'] < $row['UF_CAPACITY']) {
    // створюємо бронювання
    $connection->commitTransaction();
} else {
    $connection->rollbackTransaction();
    // пропонуємо waitlist
}

ORM Бітрікса не підтримує SELECT ... FOR UPDATE, тому критичну секцію обгортаємо в raw SQL.

Waitlist реалізується окремим HL FitnessWaitlist. Коли хтось скасовує запис, агент перевіряє waitlist і переносить першого в черзі, надсилаючи SMS/push.

Скасування запису — клуб дозволяє скасування за 2–4 години до початку. Логіка в обробнику події порівнює час.

Продаж абонементів через модуль sale

Абонементи — не прості товари. У них термін дії, кількість відвідувань, заморозка.

Типи абонементів реалізуються як елементи інфоблока з властивостями:

  • DURATION_DAYS, VISIT_LIMIT, TYPE, FREEZE_ALLOWED, FREEZE_MAX_DAYS

При купівлі через Order::create() абонемент додається в кошик. Після оплати обробник OnSaleOrderPaid створює запис у HL UserSubscription з полями: UF_USER_ID, UF_START_DATE, UF_END_DATE, UF_VISITS_LEFT, UF_IS_FROZEN, UF_FREEZE_START.

Заморозка — клієнт натискає «Заморозити», система перевіряє ліміти та встановлює UF_IS_FROZEN. При розморожуванні перераховує UF_END_DATE.

Економія на розробці з нашим підходом є значною у порівнянні з типовими рішеннями, а бюджет проєкту визначається індивідуально.

Інтеграція з CRM-системами клубу

Фітнес-клуби використовують 1С:Фітнес клуб або Mobifitness.

1С:Фітнес клуб — обмін через CommerceML або REST API. Синхронізуються: послуги, розклад, клієнти, продажі. Обмін по cron кожні 15–30 хвилин.

Mobifitness — REST API з авторизацією по токену. Бітрікс виступає фронтендом, Mobifitness — мастер-системою. HL FitnessSchedule заповнюється через синхронізацію.

Вибір архітектури залежить від мастер-системи.

Особистий кабінет клієнта

Будується на модулі main з розширеннями:

  • Історія відвідувань — вибірка з FitnessBooking
  • Залишок занять — UF_VISITS_LEFT з UserSubscription
  • Продовження абонементу — кнопка, що створює замовлення
  • Заморозка/розморозка

Авторизація — через телефон з SMS-кодом (модуль messageservice).

Тренерські профілі

Тренери — інфоблок з прив'язкою до напрямків. На детальній сторінці — розклад на поточний тиждень (AJAX-запит до FitnessSchedule).

Терміни реалізації

Масштаб проєкту Склад Термін
Невеликий клуб (1 зал, 5–7 напрямків) Розклад, запис, абонементи, особистий кабінет 8–10 тижнів
Мережа з 3–5 клубів Мультисайтовість, єдина база, інтеграція з Mobifitness 14–18 тижнів
Велика мережа (10+ клубів) B2B-портал, мобільний додаток через REST Бітрікса, складна тарифікація 20–28 тижнів

Що входить в роботу

  • Аудит поточної архітектури та навантажень (безкоштовно)
  • Проектування Highload-структур (HL-блоки, індекси, тригери)
  • Розробка розкладу, онлайн-запису з waitlist, особистого кабінету
  • Інтеграція з 1С:Фітнес клуб або Mobifitness
  • Налаштування тегованого кешування та композитного режиму
  • Підключення платіжних шлюзів (ЮKassa, Сбер, АТОЛ)
  • Навчання адміністраторів та передача документації
  • 3 місяці технічної підтримки після запуску
Типові помилки при проектуванні розкладу
  • Використання інфоблоків для розкладу — призводить до гальмування при 300+ заняттях.
  • Відсутність блокувань SELECT ... FOR UPDATE — дублі бронювань.
  • Зберігання листа очікування в тому ж інфоблоці — ускладнює логіку та гальмує.
  • Ігнорування кешування — на піку навантаження сервер падає.
  • Відсутність мастер-системи — конфлікти даних між сайтом і CRM.

Наша команда — 8+ років досвіду з 1С-Бітрікс, 15+ проєктів для фітнес-клубів, 5 років на ринку. Високонавантажені розклади — наша спеціалізація.

Перед стартом визначте мастер-систему розкладу та платіжний шлюз — це впливає на архітектуру. Отримайте консультацію: зв'яжіться з нами, щоб обговорити деталі.

Як правильно проектувати інфоблоки?

Ми бачимо десятки проєктів, де неправильна структура інфоблоків перетворює сайт на гальмо. Типовий сценарій: замовник просить «каталог товарів». Розробник створює один інфоблок 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 з версіонуванням.

Процес роботи:

  1. Аналітика — вивчаємо конкурентів, збираємо вимоги, малюємо прототипи в Figma. На виході — ТЗ з user stories.
  2. Дизайн — UI/UX з дизайн-системою. Компоненти перевикористовуються.
  3. Розробка — пишемо компоненти з кастомними шаблонами в local/templates/. Бізнес-логіку виносимо в модулі local/modules/.
  4. Тестування — функціональне, кросбраузерне, навантажувальне (до 1000 запитів). Критичні баги виправляємо до запуску.
  5. Запуск — деплой на прод, моніторинг через 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 — замовте аудит продуктивності та міграцію на Бітрікс.