Разработка сайта химчистки на 1С-Битрикс
Сайт химчистки решает конкретную задачу: клиент должен понять, сколько стоит обработка его вещи, и оставить заявку — желательно за одно посещение, без звонков и уточнений. На 1С-Битрикс это реализуется через связку инфоблоков, Highload-блоков с ценовой матрицей и формы заказа с привязкой к CRM.
Каталог услуг: структура инфоблоков
Услуги химчистки группируются по категориям: одежда, ковры и ковролин, шторы и текстиль, кожа и замша, свадебные платья, мягкая мебель. Каждая категория — раздел инфоблока Services. Элементы внутри — конкретные услуги: «Химчистка пуховика», «Чистка ковра 2×3 м», «Реставрация кожаной куртки».
Свойства элемента инфоблока:
- PROPERTY_MATERIAL — тип материала (множественное, справочник)
- PROPERTY_MIN_PRICE — стоимость от (для отображения в каталоге)
- PROPERTY_DURATION — срок выполнения в рабочих днях
- PROPERTY_COMPLEXITY — сложность обработки (стандарт / повышенная / премиум)
- PROPERTY_PHOTO_BEFORE_AFTER — галерея «до/после» (множественный файл)
Для вывода используется компонент bitrix:catalog.section.list с кастомным шаблоном. Карточка услуги показывает фото, диапазон цен, срок и кнопку «Рассчитать стоимость», которая открывает калькулятор с предзаполненной категорией.
Калькулятор стоимости с матрицей цен
Калькулятор — ключевой элемент сайта, и его архитектура заслуживает подробного разбора.
Ценовая матрица. Цена зависит от трёх параметров: тип изделия, материал и степень загрязнения. Это даёт трёхмерную матрицу, которая хранится в Highload-блоке CleaningPrices:
| Поле HL-блока | Тип | Пример значения |
|---|---|---|
| UF_ITEM_TYPE | Привязка к справочнику | Пуховик |
| UF_MATERIAL | Привязка к справочнику | Полиэстер |
| UF_CONTAMINATION | Список | light / medium / heavy |
| UF_BASE_PRICE | Число | 1800 |
| UF_EXPRESS_COEFF | Число | 1.5 |
| UF_EXTRA_SERVICES | JSON | {"waterproofing": 500, "deodorization": 300} |
Справочники ItemTypes и Materials — отдельные HL-блоки. Это позволяет менеджеру добавлять новые типы изделий и материалов без разработчика. Привязки между ними задают допустимые комбинации: кожа применима к куртке, но не к постельному белью.
Логика работы на фронтенде. Калькулятор реализуется как пошаговая форма (wizard):
- Шаг 1 — Тип изделия. Визуальный выбор иконками: куртка, платье, ковёр, шторы. При выборе AJAX-запрос подгружает доступные материалы для этого типа
- Шаг 2 — Материал. Список фильтруется по типу изделия. Для неопытных пользователей — подсказки с фото текстур
- Шаг 3 — Степень загрязнения. Три варианта с визуальными примерами: лёгкое (пыль, поверхностные пятна), среднее (застарелые пятна, запах), сильное (масло, краска, плесень)
-
Шаг 4 — Дополнительные услуги. Чекбоксы: водоотталкивающая пропитка, дезодорация, антимоль, упаковка. Стоимость подтягивается из поля
UF_EXTRA_SERVICES - Результат. Итоговая стоимость с разбивкой: базовая цена + доп. услуги. Опционально — стоимость экспресс-обработки (×UF_EXPRESS_COEFF)
Серверная часть. AJAX-контроллер CleaningCalculator наследуется от Bitrix\Main\Engine\Controller. Метод calculateAction() принимает ID типа, материала, уровень загрязнения и массив доп. услуг. Делает выборку из HL-блока через D7 ORM:
CleaningPricesTable::getList([
'filter' => [
'UF_ITEM_TYPE' => $itemTypeId,
'UF_MATERIAL' => $materialId,
'UF_CONTAMINATION' => $contamination
]
])
Если точное совпадение не найдено (клиент выбрал редкий материал), берётся цена по умолчанию для типа изделия с пометкой «точная стоимость после осмотра».
Кэширование матрицы. При первом запросе вся матрица цен загружается в Bitrix\Main\Data\Cache с тегом cleaning_prices. При изменении любого элемента HL-блока тег сбрасывается через обработчик OnAfterUpdate. Это исключает запросы к базе при каждом расчёте.
Онлайн-заявка с вызовом курьера
После расчёта стоимости клиент заполняет форму заказа:
- Контактные данные (телефон, имя)
- Адрес забора (с подсказками через DaData API)
- Дата и временной слот забора (выбор из доступных — агент ежедневно генерирует слоты на 7 дней вперёд)
- Комментарий (описание загрязнений, особые пожелания)
Заявка создаёт лид в CRM-модуле Битрикс24 через REST API. В карточке лида уже заполнены: услуга, расчётная стоимость, адрес, слот забора. Менеджеру остаётся подтвердить заказ и назначить курьера.
Для SMS-уведомлений подключается провайдер через модуль messageservice. Клиент получает SMS на каждом этапе: «Курьер выехал», «Вещи приняты», «Заказ готов», «Курьер доставит сегодня с 14 до 16».
Отслеживание заказа по номеру
На сайте размещается форма «Проверить статус заказа». Клиент вводит номер заказа и последние 4 цифры телефона. Система ищет элемент в инфоблоке Orders и отображает текущий статус с таймлайном:
| Этап | Статус | Дата |
|---|---|---|
| Заявка принята | Выполнено | 12.03 |
| Курьер забрал вещи | Выполнено | 13.03 |
| Осмотр и оценка | Выполнено | 13.03 |
| Химчистка | В процессе | — |
| Контроль качества | Ожидание | — |
| Доставка клиенту | Ожидание | — |
Статус обновляется оператором в админке или автоматически через webhook из учётной системы химчистки (1С:Предприятие, StoryClean, собственная ERP).
Программа лояльности
Для постоянных клиентов реализуется накопительная система. Используется модуль sale с внутренними счетами пользователей. При оплате заказа начисляются бонусные баллы (процент от суммы настраивается в HL-блоке LoyaltySettings).
Механика:
- Регистрация по номеру телефона (авторизация через SMS-код, модуль
mainс кастомным обработчиком) - Личный кабинет: история заказов, баланс бонусов, избранные адреса
- Списание бонусов при следующем заказе (ограничение — не более 30% от суммы)
- Реферальная программа: клиент делится ссылкой, при заказе нового клиента оба получают бонусы
Баланс бонусов хранится в UF-поле пользователя UF_BONUS_BALANCE. Начисление и списание логируются в отдельном HL-блоке BonusTransactions для прозрачности и возможности аудита.
SEO-оптимизация для локального поиска
Химчистка — локальный бизнес. Основные запросы содержат географию: «химчистка пуховиков Минск», «чистка ковров Фрунзенский район».
Настраивается:
- Микроразметка Schema.org
DryCleaningOrLaundryс адресом, графиком работы, зоной обслуживания - Посадочные страницы под районы — через инфоблок
GeoPagesс привязкой к координатам - Автогенерация title и description по шаблону: «Химчистка {тип_изделия} в {район} — от {мин_цена} руб.»
- Страницы «до/после» с alt-тегами по типу загрязнения — работают на поиск по картинкам
- Модуль SEO Битрикс для управления robots.txt, sitemap.xml, каноническими URL
Компонентное кэширование настраивается с учётом гео: для каждого города/района — свой вариант кэша через CACHE_GROUPS.







