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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка сайта салона красоты на 1С-Битрикс
Сложная
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1240
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    847
  • 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 Appointment Booking Widget for a Medical Center
    582
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    749
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    981

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

Сайт салона красоты работает как ресепшен, который никогда не уходит на обед. Клиент выбирает услугу, видит свободного мастера, записывается на удобное время — и всё это без звонка. Если записи нет онлайн, салон теряет тех, кто ищет «маникюр рядом» в 11 вечера и готов забронировать прямо сейчас.

Разберём реализацию на 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. За сутки до визита — напоминание через агент Битрикса. Если клиент не подтверждает — запись переходит в статус unconfirmed, и администратор решает, освободить ли слот.

Интеграция с YCLIENTS и 1С:Салон красоты

Большинство салонов уже используют систему учёта. Две самые распространённые:

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\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 недель
Салон с собственной системой записи + расчёт слотов в Битриксе, SMS-напоминания, сертификаты 10-14 недель
Сеть салонов + мультисайтовость, единая клиентская база, лояльность, интеграция с 1С 16-22 недели

На что обратить внимание

Скорость загрузки страницы каталога критична — клиент сравнивает несколько салонов и уходит, если страница грузится больше 2 секунд. Кэширование компонентов Битрикса ('CACHE_TIME' => 3600) обязательно для каталога и портфолио. Страницу онлайн-записи кэшировать нельзя — данные о слотах должны быть актуальными.