Разработка сайта салона красоты на 1С-Битрикс
Салон красоты теряет до 30% потенциальных записей, если на сайте нет работающей онлайн-записи. При среднем чеке 2000 ₽ и 100 заявках в месяц это 60 000 ₽ ежемесячного упущенного дохода. Клиенты ищут услуги в 11 вечера, видят красивый лендинг, но не могут записаться — уходят к конкурентам, у которых кнопка «Забронировать» работает. Наше решение на 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 является мастер-системой. Минус: зависимость от стороннего 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 недель.







