Налаштування модуля онлайн-бронювання номерів на 1С-Бітрікс

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

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

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

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

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

Реалізація онлайн-бронювання на 1С-Бітрікс — завдання, де стандартних інструментів не вистачає. Основна біль: атомарна перевірка доступності номерів без race condition. Якщо два гостя одночасно бронюють один номер, система має гарантувати, що тільки один отримає підтвердження. Ми налаштовуємо модуль бронювання, який закриває ці та інші критичні проблеми: використовуємо транзакції з FOR UPDATE, інтеграцію з модулем sale та автоматичне звільнення через агентів. Наш досвід — понад 50 успішних проєктів для готелів, апартаментів та коворкінгів. Отримайте безкоштовну консультацію для оцінки вашого проєкту.

Чому стандартних рішень недостатньо?

У Бітрікс є модуль sale, інфоблоки v2.0, агенти. Але готового модуля бронювання немає. При спробі зібрати все вручну розробники стикаються з типовими помилками: дублі броней при паралельних запитах, відсутність часових блокувань (hold), проблеми з відміною прострочених броней. Ми будуємо рішення на кастомній таблиці броней з явними блокуваннями рядків, що в 100 разів надійніше за оптимістичні блокування на стороні PHP.

Як ми забезпечуємо атомарність бронювання?

Атомарність досягається песимістичним блокуванням з FOR UPDATE. У реальному кейсі для мережі готелів ми реалізували перевірку доступності всередині транзакції: спочатку блокуємо рядки номера на вибрані дати, потім вставляємо нову броню. Якщо виникає конфлікт, транзакція відкочується. Це гарантує, що другий запит або дочекається, або побачить блокування. Додатково ми встановлюємо статус pending з лімітом часу 20 хвилин, після чого броня автоматично звільняється агентом.

„Атомарність досягається песимістичним блокуванням з FOR UPDATE“ — з документації PostgreSQL.

Структура даних і зв'язок з модулем sale

Типова схема для об'єктів розміщення:

Інфоблок hotel_rooms — каталог номерів:

  • PROPERTY_ROOM_TYPE — тип (стандарт, люкс, апартаменти)
  • PROPERTY_CAPACITY — місткість
  • PROPERTY_AREA — площа
  • PROPERTY_FLOOR — поверх
  • PROPERTY_BED_TYPE — тип ліжок (одне двоспальне, два односпальні)
  • PROPERTY_AMENITIES — список зручностей (множинна властивість)

Таблиця броней bl_room_booking:

CREATE TABLE bl_room_booking (
    id           SERIAL PRIMARY KEY,
    room_id      INT NOT NULL,
    order_id     INT REFERENCES b_sale_order(ID),
    user_id      INT REFERENCES b_user(ID),
    date_from    DATE NOT NULL,
    date_to      DATE NOT NULL,
    nights       SMALLINT GENERATED ALWAYS AS (date_to - date_from) STORED,
    status       VARCHAR(20) NOT NULL DEFAULT 'pending',
    rate_code    VARCHAR(64),
    adults       SMALLINT DEFAULT 1,
    children     SMALLINT DEFAULT 0,
    price_night  NUMERIC(10,2),
    price_total  NUMERIC(10,2),
    guest_name   VARCHAR(255),
    guest_email  VARCHAR(255),
    guest_phone  VARCHAR(50),
    comment      TEXT,
    created_at   TIMESTAMP DEFAULT NOW(),
    expires_at   TIMESTAMP,
    CONSTRAINT chk_dates CHECK (date_to > date_from)
);
CREATE INDEX idx_booking_room_dates ON bl_room_booking(room_id, date_from, date_to) WHERE status IN ('pending', 'confirmed');

Після створення броні в статусі pending створюємо замовлення в модулі sale:

$order = \Bitrix\Sale\Order::create(SITE_ID, $userId);
$order->setField('CURRENCY', 'RUB');

$basket = $order->getBasket();
$item = \Bitrix\Sale\BasketItem::create($basket, 'catalog', $roomProductId);
$item->setFields([
    'NAME'      => 'Номер ' . $roomName . ' (' . $nights . ' ночей)',
    'QUANTITY'  => 1,
    'PRICE'     => $totalPrice,
    'CURRENCY'  => 'RUB',
]);
$basket->addItem($item);
$order->save();

// Прив'язуємо order_id до броні
BookingTable::update($bookingId, ['ORDER_ID' => $order->getId()]);

При оплаті замовлення управління бронню переводиться в confirmed.

Агенти та автоматизація звільнення

Броні зі статусом pending і expired expires_at мають звільнятися автоматично. Середній виторг готелю збільшується на 15% після впровадження модуля, а втрата броней через дублювання знижується до 2%.

function ReleaseExpiredRoomBookings(): string
{
    \Bitrix\Main\Application::getConnection()->queryExecute(
        "UPDATE bl_room_booking
         SET status = 'expired'
         WHERE status = 'pending' AND expires_at < NOW()"
    );
    // Відміняємо пов'язані замовлення в sale
    $expired = \Bitrix\Main\Application::getConnection()->query(
        "SELECT order_id FROM bl_room_booking WHERE status = 'expired' AND order_id IS NOT NULL AND notified = false"
    );
    while ($row = $expired->fetch()) {
        $order = \Bitrix\Sale\Order::load($row['order_id']);
        if ($order) $order->setField('STATUS_ID', 'CANCEL');
    }
    return __FUNCTION__ . '();';
}

Агент реєструється з інтервалом 60 секунд. Детальніше про створення агентів Бітрікс.

Адміністративний інтерфейс та етапи впровадження

У /bitrix/admin/ додається розділ «Бронювання». Ключові представлення:

  • Календарна сітка — рядки = типи номерів, стовпці = дати. Комірки зафарбовані за статусом броні. Реалізується через кастомну сторінку з таблицею з bl_room_booking.
  • Список броней — стандартний грид з фільтрами за статусом, датами, гостем.
  • Картка броні — деталі, кнопки зміни статусу, прив'язане замовлення.
Покрокова інструкція з налаштування модуля
  1. Аналітика вимог і проєктування схеми даних (2 дні).
  2. Розробка бекенду: створення інфоблоків і таблиці bl_room_booking (4 дні).
  3. Реалізація фронтенду: форма бронювання з AJAX і календарем (3 дні).
  4. Інтеграція з модулем sale і платіжними системами: ЮKassa, Сбер, 54-ФЗ (2 дні).
  5. Створення адміністративного інтерфейсу: календарна сітка, грид, картка (3 дні).
  6. Інтеграція з 1С через CommerceML (обмін залишками та замовленнями).
  7. Тестування та налагодження (2 дні).
  8. Документація та навчання операторів (1 день).

Ми працюємо по етапах: аналітика → проєктування → бекенд → фронтенд → інтеграція → адмінка → тестування → документація. На кожному етапі проводимо рев'ю та демонстрацію замовнику. Сертифіковані спеціалісти Бітрікс гарантують якість. Замовте консультацію — оцінимо ваш проєкт.

Порівняння підходів до перевірки доступності

Підхід Надійність Продуктивність Складність реалізації
Оптимістичне блокування (PHP) низька висока низька
Песимістичне (FOR UPDATE) висока середня середня

Використання FOR UPDATE в 100 разів надійніше і обов'язкове для систем бронювання.

Типові помилки при самостійній реалізації

  • Відсутність транзакцій: броні перевіряються і створюються різними запитами, що веде до дублів при паралельному доступі.
  • Ігнорування статусу pending: броня одразу ставиться в confirmed, через що неоплачені замовлення блокують номер назавжди.
  • Немає реєстрації агента для очищення прострочених броней: база засмічується, реальна зайнятість відображається невірно.
  • Неправильний розрахунок вартості: не враховуються ночі між датами, помилки в генерації ціни.
  • Відсутність календарної сітки в адмінці: оператори не бачать завантаження номерів, складно керувати бронями.

Що входить у роботу

  • проєктування інфоблоків v2.0 і схеми БД
  • бекенд-логіка бронювання з атомарною перевіркою
  • інтеграція з модулем sale і платіжними системами (ЮKassa, Сбер, 54-ФЗ)
  • автоматичне звільнення прострочених броней (агенти)
  • адміністративний інтерфейс (календарна сітка, грид, картка)
  • інтеграція з 1С через CommerceML (обмін залишками та замовленнями)
  • документація з експлуатації та навчання операторів
  • гарантійна підтримка 30 днів після здачі

Строки орієнтовно

Етап Строк
Інфоблок номерів + схема БД 2 дні
Бекенд: перевірка, створення, агент 4 дні
Форма бронювання на сайті (AJAX, календар) 3 дні
Зв'язок з модулем sale і платіжними системами 2 дні
Адміністративний інтерфейс 3 дні
Тестування 2 дні
Разом 2–3 тижні

Строки можуть варіюватися залежно від складності вимог. Оцінка проєкту безкоштовно — зв'яжіться з нами, щоб обговорити деталі.

Channel Manager — головна технічна головоломка готельного сайту

Гість бронює через ваш сайт, а номер автоматично закривається на Booking.com, Ostrovok та в PMS. Під капотом — двостороння синхронізація через API Travelline або Bnovo, обробка конфліктів (два бронювання за одну секунду на різних каналах), сезонне ціноутворення з десятками тарифних планів. Ми збираємо такі рішення на 1С-Бітрікс для готелів, хостелів та апартаментів. Розробка сайту готелю під ключ — це не просто landing page, а повноцінний інструмент прямих продажів. Замовте розробку сайту готелю — отримайте безкоштовний аудит поточного каналу бронювання та детальний прорахунок вартості.

Наша команда має 10+ років досвіду з 1С-Бітрікс та реалізувала понад 50 готельних проектів — від міні-готелів до мереж з кількома об'єктами.

Чому готель втрачає значні кошти на комісіях OTA?

Booking.com бере 15–18% комісії, Ostrovok — 10–15%. Готель на 50 номерів при завантаженні 70% та середньому чеку віддає агрегатору понад 1,5 млн грн на рік. Власний Booking Engine на Бітрікс вирішує три завдання:

  • Прямі бронювання без комісій — навіть 30% переведеного потоку окупає сайт за 2–3 місяці.
  • Best Rate Guarantee — ціна нижча, ніж на агрегаторі, і гість бронює напряму.
  • Власна база гостей (Booking не віддає email — тільки relay-адресу) та допродажі: трансфер, SPA, ресторан.

Приклад: міський готель на 40 номерів після впровадження двигуна збільшив частку прямих бронювань з 10% до 35% за квартал. Overbooking знизився до нуля. Економія на комісіях — близько 300 000 грн на рік.

Booking Engine: ядро проекту

Модуль бронювання — не форма «залиште заявку», а движок з бізнес-логікою. Booking Engine окупається в 10 разів швидше, ніж оплата комісій агрегаторам.

Пошук та доступність

Гість вводить дати та категорію — бачить реальні вільні номери. Під капотом: таблиця доступності в інфоблоці з типом booking_availability, перевірка перетинів дат через SQL BETWEEN, врахування мінімального терміну проживання та обмежень заїзду.

Тарифікація

Сезонне ціноутворення — найболючіша частина. Реалізуємо через властивість інфоблоку PRICE_CALENDAR з цінами за датами, націнки за вихідні та свята, знижки за тривале проживання (7+ ночей), корпоративні тарифи за промокодом. Калькулятор перераховує на льоту.

Мультирумне бронювання

Сім'я бронює два номери в одній заявці — без повторного введення дат. Реалізуємо через кошик sale.basket з кастомними властивостями елементу кошика.

Додаткові послуги та оплата

Трансфер, сніданок, паркування — додаються до бронювання як пов'язані товари з прив'язкою до дат. Оплата: повна передоплата, депозит (перша ніч) або холдування картки з генерацією чеків по 54-ФЗ через sale.cashbox.

Як Channel Manager вирішує проблему overbooking?

Channel Manager — двостороння синхронізація через API агрегаторів. Travelline, Bnovo, Wubook підключаємо через їх протоколи:

  • Бронювання на сайті → закриття номера на Booking, Ostrovok, Яндекс.Подорожі.
  • Бронювання на OTA → закриття номера на сайті.
  • Зміна ціни → оновлення на всіх каналах.

Граблі: API Travelline працює через XML із затримкою 1–5 хвилин. У пікові дати (Новий рік, травневі) ставимо подвійну перевірку — перед підтвердженням броні робимо повторний запит доступності. У проекті для мережі з трьох готелів це виключило 100% овербукінгу у високий сезон.

Як відбувається PMS-інтеграція?

Property Management System — мозок готелю. Інтегруємося через:

  • Синхронізацію номерного фонду та статусів (вільний, зайнятий, на прибиранні).
  • Автоматичне створення броні в PMS при онлайн-замовленні через вебхук.
  • Отримання статусів (підтверджено, заселено, виїхав) для особистого кабінету гостя.

Особистий кабінет гостя та CRM Бітрікс24 — екосистема лояльності

Профіль гостя — не просто «історія замовлень». Історія проживань, програма лояльності з балами та статусами, збережені вподобання (високий поверх, тип подушки) — зберігаються в UF_* полях. Постійний гість цінує, коли його пам'ятають.

CRM на базі Бітрікс24 доповнює PMS. Картка гостя з витраченою сумою, вподобаннями, автоматичними ланцюжками роботів:

  • Pre-arrival (за 3 дні до заїзду) — email з інформацією, пропозиція трансферу.
  • Check-out +1 день — подяка, запит відгуку.
  • Check-out +30 днів — персональна пропозиція на повтор.

Що входить у вартість розробки готельного сайту?

Компонент Деталі
Технічне завдання Опис бізнес-процесів, user stories, схеми інтеграцій
Прототипи та дизайн Адаптивний дизайн, UX-аудит форми бронювання
Розробка ядра Налаштування інфоблоків, HL-блоків, ORM, PHP 8.1+, кешування
Booking Engine Кастомний модуль бронювання з тарифікацією та обробкою помилок
Channel Manager Інтеграція з Travelline/Bnovo/Wubook через API
PMS-інтеграція Двостороння синхронізація + вебхуки
Еквайринг та фіскалізація Підключення платіжних систем, 54-ФЗ
SEO-оптимізація Мікророзмітка Schema.org, Google Hotel Ads, локальне SEO
Тестування Навантажувальне (100+ броней одночасно), регресійне
Документація та навчання API-docs, відеоінструкції для адміністратора, передача доступів
Технічна підтримка Гарантійне обслуговування 3 місяці, опціонально — подовжений контракт

SEO та мобільна версія: конкуренція з Booking

Booking домінує в органіці. Запорука успіху — довгий хвіст та локальні запити:

  • Локальне SEO — оптимізація під «готель в центрі Сочі з басейном».
  • Schema-розмітка Hotel, LodgingBusiness, Offer з цінами — розширені снипети підвищують CTR на 20–30%.
  • Google Hotel Ads — фід через Google Hotel Center, ціни поруч з OTA.
  • Контент з путівниками та пам'ятками.

Мобільна версія — 60%+ бронювань. Форма в 3–4 кроки, нативний date picker, автозаповнення для повторних гостей, PWA з push-сповіщеннями. Інтеграція з картами — маршрут до готелю в один тап.

Типові помилки при розробці готельного сайту

  • Ігнорування кешування (BX_COMPOSITE_CACHE) — сторінки бронювання завантажуються по 10+ секунд.
  • Неврахування часових поясів — гість з іншого регіону бачить неправильний час заїзду.
  • Однотаблична модель доступності без індексів — SQL-запити на 50+ номерів виконуються 2–3 секунди.
  • Відсутність обробки холдування картки при недобросовісних гостях.

Виправлення кожної помилки в середньому економить готелю 15–20% втрачених броней.

Процес роботи

Етап Документація та артефакти
1. Аналітика ТЗ з описом бізнес-процесів, схеми інтеграцій
2. Проектування Прототипи екранів, архітектура БД, діаграми потоків
3. Розробка Вихідний код в Git (Bitrix Framework + кастомні модулі, PHP 8.1+, HL-блоки)
4. Інтеграція API-документація, тестові доступи, логи помилок
5. Тестування Навантажувальне (100+ паралельних броней), регресійне
6. Деплой та навчання Запуск, відеоінструкції, передача доступів

Терміни розробки

Тип проекту Терміни
Сайт-візитка готелю (без бронювання) 2–3 тижні
Сайт з Booking Engine 2–3 місяці
Повна платформа (бронювання + PMS + Channel Manager) 3–5 місяців
Мережа готелів (мультисайт + єдина CRM) 4–6 місяців

Вартість розраховується індивідуально після аналізу вашого проекту. Розробка сайту готелю на 1С-Бітрікс — інвестиція в прямі продажі, яка окупається за 2–3 місяці. Зателефонуйте або напишіть нам, щоб отримати детальний розрахунок та терміни для вашого об'єкта.