Розробка сайту хімчистки на 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.







