Розробка сайту салону краси на 1С-Бітрікс
Салон краси втрачає до 30% потенційних записів, якщо на сайті немає працюючого онлайн-запису. При середньому чеку 2000 грн і 100 заявках на місяць це 60 000 грн щомісячного втраченого доходу. Клієнти шукають послуги о 23:00, бачать красивий лендинг, але не можуть записатися — йдуть до конкурентів, у яких кнопка «Забронювати» працює. Наше рішення на 1С-Бітрікс виправляє це: каталог послуг з актуальними цінами, розрахунок вільних слотів у реальному часі, автоматичні нагадування. Досвід — понад 40 проєктів за 8 років.
Чому онлайн-запис збільшує виручку салону?
Конверсія сайту салону без онлайн-запису — 1-2%, з ним — 5-8%. Різниця — у 3-4 рази більше заявок. Система бронювання працює як ресепшн 24/7: клієнт сам обирає майстра та час, не чекає відповіді по телефону. У пікові години (вечір, вихідні) це вирішує проблему перевантажених адміністраторів. Статистика впроваджень показує зростання кількості записів на 40-60% за перші 3 місяці.
Каталог послуг: структура інфоблоків
Послуги організуються в інфоблоці з ієрархією розділів: «Перукарня», «Манікюр та педикюр», «Косметологія», «Масаж». Кожен розділ містить підрозділи — «Стрижки», «Фарбування», «Доглядові процедури». Для типового салону кількість послуг варіюється від 30 до 80.
Властивості елемента інфоблоку «Послуги»:
| Властивість | Тип | Призначення |
|---|---|---|
| PRICE_FROM | number | Ціна «від» (залежить від майстра) |
| DURATION_MIN | number | Тривалість у хвилинах |
| MASTER_LINK | E (множинне) | Прив'язка до майстрів, що надають послугу |
| CATEGORY_TAGS | string (множинне) | Теги: «для наречених», «новинка» |
| CONTRAINDICATIONS | HTML | Протипоказання (для косметології) |
| PREPARATION | HTML | Підготовка до процедури |
Ціна «від» — усвідомлене рішення. У салонах ціна залежить від категорії майстра (стажер, стиліст, топ-стиліст). Точна ціна розраховується після вибору майстра — для цього потрібна проміжна таблиця «майстер — послуга — ціна». Реалізується через Highload-блок MasterServicePrice з полями: UF_MASTER_ID, UF_SERVICE_ID, UF_PRICE. При виборі послуги на фронті підтягуються всі майстри з їхніми цінами через DataManager::getList().
Як організувати онлайн-запис без дублювання слотів?
Це ключовий функціонал сайту і найскладніший у реалізації. Клієнт очікує простий інтерфейс: вибрав послугу, вибрав майстра, побачив вільні вікна, натиснув «Записатися». За цією простотою — багаторівнева логіка розрахунку доступності.
Крок 1: вибір послуги. Клієнт обирає з каталогу. Система визначає тривалість (DURATION_MIN) і список майстрів, які надають цю послугу (MASTER_LINK).
Крок 2: вибір майстра або «будь-який вільний». Якщо клієнт обирає конкретного майстра — працюємо з його графіком. Якщо «будь-який» — перебираємо всіх майстрів послуги та показуємо об'єднаний набір слотів.
Крок 3: розрахунок вільних слотів. Тут починається інженерна частина.
Дані для розрахунку зберігаються в трьох Highload-блоках:
-
MasterSchedule— робочий графік майстра:UF_MASTER_ID,UF_DATE,UF_WORK_START,UF_WORK_END,UF_BREAK_START,UF_BREAK_END. -
MasterBooking— існуючі записи:UF_MASTER_ID,UF_DATE,UF_TIME_START,UF_TIME_END,UF_CLIENT_ID,UF_SERVICE_ID,UF_STATUS. -
MasterDayOff— відпустки, лікарняні, вихідні.
Алгоритм розрахунку вільних слотів для конкретного майстра на конкретну дату:
- Отримати робочий графік з
MasterSchedule. Якщо запису немає або дата вMasterDayOff— майстер недоступний. - Сформувати масив робочих хвилин: від
UF_WORK_STARTдоUF_WORK_END, виключаючи перерву. - Отримати всі записи з
MasterBookingзі статусомconfirmedабоpending. - Відняти з робочих хвилин зайняті інтервали.
- У вільних інтервалах знайти вікна, тривалість яких >=
DURATION_MINпослуги. - Розбити ці вікна на слоти з кроком 15 або 30 хвилин (налаштовується).
Псевдокод розрахунку слотів
$freeIntervals = subtractIntervals($workIntervals, $bookedIntervals);
$slots = [];
foreach ($freeIntervals as $interval) {
$start = $interval['start'];
while ($start + $serviceDuration <= $interval['end']) {
$slots[] = $start;
$start += $stepMinutes;
}
}
Буфер між записами. Між процедурами часто потрібна технічна перерва — 5-15 хвилин на прибирання кабінету або підготовку інструментів. Буфер додається до DURATION_MIN при розрахунку слотів, але не показується клієнту.
Конкурентний доступ. Два клієнти одночасно бачать один і той самий вільний слот. Перший натискає «Записатися» — слот блокується. Другий отримує повідомлення «час зайнятий, оберіть інший». Блокування реалізується через транзакцію: INSERT в MasterBooking + перевірка відсутності перетинів в одній транзакції.
Підтвердження запису. Після бронювання клієнт отримує SMS (модуль messageservice) та email. За добу до візиту — нагадування через агент Бітрікса. Якщо клієнт не підтверджує — запис переходить у статус unconfirmed, і адміністратор вирішує, чи звільнити слот.
Що робити, якщо YCLIENTS недоступний?
Більшість салонів уже використовують систему обліку. Дві найпоширеніші:
- YCLIENTS. Хмарна платформа з REST API. Основні ендпоінти:
/api/v1/book_record/(створення запису),/api/v1/book_dates/(доступні дати),/api/v1/book_times/(доступні слоти). При інтеграції з YCLIENTS сайт Бітрікса не розраховує слоти самостійно — він запитує їх через API. Highload-блокиMasterScheduleтаMasterBookingу цьому випадку не потрібні: YCLIENTS є master-системою. Мінус: залежність від стороннього API. Якщо YCLIENTS лежить — на сайті немає запису. Рішення — кешування останнього відомого розкладу та fallback на форму «залишити заявку». - 1С:Салон краси. Обмін через HTTP-сервіси 1С або файловий обмін (XML). Синхронізація майстрів, послуг, записів. Зазвичай працює із затримкою 5-15 хвилин — не real-time.
Портфоліо робіт майстрів
Інфоблок «Портфоліо» з прив'язкою до майстра та послуги. Ключові властивості:
-
PHOTO_BEFORE/PHOTO_AFTER— файлові властивості -
MASTER_LINK— прив'язка до майстра -
SERVICE_LINK— прив'язка до послуги -
DESCRIPTION— що було зроблено
На сторінці майстра портфоліо фільтрується за MASTER_LINK. На сторінці послуги — за SERVICE_LINK. Фотографії до/після відображаються слайдером з роздільником — популярний патерн для б'юті-індустрії.
Важливо: фото портфоліо мають бути стиснені. Клієнти салонів частіше заходять з мобільних — 10 фото по 5 МБ кожне вб'ють конверсію. Бітрікс вміє ресайзити через CFile::ResizeImageGet(), але краще налаштувати WebP-конвертацію на рівні nginx або через обробник події OnFileSave.
Подарункові сертифікати та акції
Подарункові сертифікати реалізуються через модуль sale. Сертифікат — це товар у каталозі з номіналом. При покупці генерується унікальний код, який зберігається у властивостях замовлення (\Bitrix\Sale\Order → propertyCollection). Код відправляється покупцю на email у вигляді PDF. При використанні сертифіката в салоні код вводиться при оформленні замовлення — спрацьовує знижковий купон модуля sale.discount. Баланс сертифіката зменшується на суму послуги.
Акції — простіше: окремий інфоблок з датою початку/закінчення, прив'язкою до послуг, текстом умов. Виводяться на головній та в каталозі через фільтр <=DATE_ACTIVE_FROM / >=DATE_ACTIVE_TO.
Програма лояльності
Бонусні бали можна реалізувати двома шляхами:
- Через
sale.discount. Модуль підтримує накопичувальні знижки та правила на основі суми покупок. Обмеження — немає гнучкого нарахування балів за конкретні дії (приведи друга, відгук, день народження). - Через кастомний модуль. Highload-блок
LoyaltyBalanceз полямиUF_USER_ID,UF_POINTS,UF_HISTORY(серіалізований лог операцій). При кожній оплаті обробникOnSaleOrderPaidнараховує бали за формулою (зазвичай 3-10% від суми). При списанні — перевірка балансу та зменшення суми замовлення.
Терміни реалізації
| Масштаб | Склад | Термін |
|---|---|---|
| Один салон, до 10 майстрів | Каталог, запис (через YCLIENTS API), портфоліо, акції | 6-8 тижнів |
| Салон із власною системою запису | + розрахунок слотів у Бітріксі, SMS-нагадування, сертифікати | 10-14 тижнів |
| Мережа салонів | + мультисайтовість, єдина клієнтська база, лояльність, інтеграція з 1С | 16-22 тижні |
Що входить в роботу
У результаті ви отримуєте:
- Працюючий сайт на 1С-Бітрікс з повним функціоналом (каталог, запис, портфоліо, сертифікати)
- Інтеграцію з обраними зовнішніми системами (YCLIENTS, 1С)
- Документацію з адміністрування сайту
- Навчання співробітників (до 2 годин)
- Доступ до вихідного коду та адмінки
- Підтримку протягом 3 місяців після запуску
На що звернути увагу
Швидкість завантаження сторінки каталогу критична — клієнт порівнює кілька салонів і йде, якщо сторінка завантажується більше 2 секунд. Кешування компонентів Бітрікса ('CACHE_TIME' => 3600) обов'язкове для каталогу та портфоліо. Сторінку онлайн-запису кешувати не можна — дані про слоти мають бути актуальними.
Зв'яжіться з нами, щоб обговорити ваш проєкт. Ми оцінимо задачу і запропонуємо оптимальне рішення під ключ. Замовте розробку сайту салону краси на 1С-Бітрікс та отримайте конкурентну перевагу вже через 6-8 тижнів.







