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

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

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

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

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

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

Сайт салону краси працює як ресепшн, який ніколи не йде на обід. Клієнт вибирає послугу, бачить вільного майстра, записується на зручний час — і все це без дзвінка. Якщо записи немає онлайн, салон втрачає тих, хто шукає «манікюр поруч» о 23:00 ночі і готовий забронювати прямо зараз.

Розберемо реалізацію на 1С-Бітрікс: від каталогу послуг до механіки онлайн-запису з розрахунком вільних слотів.

Каталог послуг: структура інфоблоків

Послуги салону організовуються в інфоблоці з ієрархією розділів: «Перукарня», «Манікюр і педикюр», «Косметологія», «Масаж». Кожен розділ може містити підрозділи — «Стрижки», «Фарбування», «Доглядові процедури».

Властивості елемента інфоблока «Послуги»:

Властивість Тип Призначення
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 — ID майстра
  • UF_DATE — дата
  • UF_WORK_START — початок смини (HH:MM)
  • 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 — відпустки, хворобілі, вихідні.

Алгоритм розрахунку вільних слотів для конкретного майстра на конкретну дату:

  1. Отримати робочий графік з MasterSchedule. Якщо запису немає або дата в MasterDayOff — майстер недоступний
  2. Сформувати масив робочих хвилин: від UF_WORK_START до UF_WORK_END, виключаючи перерву
  3. Отримати всі записи з MasterBooking зі статусом confirmed або pending
  4. Вичесть з робочих хвилин займані інтервали
  5. У залишених вільних інтервалах знайти вікна, тривалість яких >= DURATION_MIN послуги
  6. Розбити ці вікна на слоти з кроком 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. За добу до візиту — нагадування через агент Bitrix. Якщо клієнт не підтверджує — запис переходить у статус unconfirmed, і адміністратор вирішує, звільнити ли слот.

Інтеграція з YCLIENTS та 1С:Салон краси

Більшість салонів уже використовують систему обліку. Дві найпоширеніші:

YCLIENTS. Хмарна платформа з REST API. Основні ендпоінти: /api/v1/book_record/ (створення запису), /api/v1/book_dates/ (доступні дати), /api/v1/book_times/ (доступні слоти). При інтеграції з YCLIENTS сайт Bitrix не розраховує слоти самостійно — він запитує їх через API. Highload-блоки MasterSchedule та MasterBooking в цьому випадку не потрібні: YCLIENTS є мастер-системою.

Мінус: залежність від стороннього API. Якщо YCLIENTS лежить — на сайті немає запису. Рішення — кешування останнього відомого розкладу і fallback на форму «залишити заявку».

1С:Салон краси. Обмін через HTTP-сервіси 1С або файловий обмін (XML). Синхронізація майстрів, послуг, записів. Зазвичай працює з затримкою 5-15 хвилин — не real-time.

Портфолія робіт майстрів

Інфоблок «Портфолія» з прив'язкою до майстра та послуги. Ключові властивості:

  • PHOTO_BEFORE / PHOTO_AFTER — файлові властивості
  • MASTER_LINK — прив'язка до майстра
  • SERVICE_LINK — прив'язка до послуги
  • DESCRIPTION — що було зроблено

На сторінці майстра портфолія фільтрується за MASTER_LINK. На сторінці послуги — за SERVICE_LINK. Фотографії до/після відображаються слайдером з розділювачем — популярний паттерн для beauty-індустрії.

Важливо: фото портфолія мають бути стиснені. Клієнти салонів частіше заходять з мобільних — 10 фото по 5 МБ кожне убивають конверсію. Bitrix вміє ресайзити через CFile::ResizeImageGet(), але краще налаштувати WebP-конвертацію на рівні nginx або через обробник події OnFileSave.

Подарункові сертифікати та акції

Подарункові сертифікати реалізуються через модуль sale. Сертифікат — це товар у каталозі з номіналом. При покупці генерується унікальний код, який зберігається у властивостях замовлення (\Bitrix\Sale\OrderpropertyCollection). Код відправляється покупцю на 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 тижнів
Салон з власною системою запису + розрахунок слотів у Bitrix, SMS-нагадування, сертифікати 10-14 тижнів
Мережа салонів + мультисайтовість, єдина клієнтська база, лояльність, інтеграція з 1С 16-22 тижні

На що звернути увагу

Швидкість завантаження сторінки каталогу критична — клієнт порівнює кілька салонів і йде, якщо сторінка грузиться більше 2 секунд. Кешування компонентів Bitrix ('CACHE_TIME' => 3600) обов'язково для каталогу та портфолія. Сторінку онлайн-запису кешувати не можна — дані про слоти мають бути актуальними.