Як інтегрувати POS та доставку з сайтом ресторану на 1С-Бітрікс

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

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

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

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

  • 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С-Бітрікс з інтеграцією iiko, онлайн-замовленням ресторан та бронюванням столиків – наша спеціалізація. Ми розробляємо сайти ресторанів на 1С-Бітрікс під ключ: від структури інфоблоку меню та онлайн-бронювання столиків до системи прийому замовлень на доставку їжі, синхронізації з POS-касою та інтеграції з агрегаторами доставки. У нашій практиці — понад 40 реалізованих проєктів, 5+ років досвіду, інтеграції з iiko, r_keeper та Poster. Ресторанний сайт — робочий інструмент, що потребує опрацьованої архітектури: інфоблоки меню, REST API касових систем, кастомні компоненти обробки замовлень та синхронізація актуальних залишків. Якщо на старті не продумати зв'язку між інфоблоком меню та POS-системою, через три місяці виявиться, що офіціант додав нову позицію в iiko, а на сайті її немає — тому що синхронізація працює в один бік, і ніхто не написав зворотний обробник.

Як інтегрувати сайт ресторану з POS-системою?

Які витрати на інтеграцію з iiko?

Вартість інтеграції з iiko становить від $1,500, що економить до $2,000 порівняно з окремими рішеннями. Інтеграція з iiko працює в 3 рази швидше, ніж з r_keeper, завдяки хмарному API.

Структура інфоблоку меню

Властивості елемента (страви):

  • WEIGHT — числове, грам. Виводиться на картці та в Schema.org розмітці
  • CALORIES — числове, ккал. Опціонально — розширений блок: білки, жири, вуглеводи (три окремі властивості PROTEINS, FATS, CARBS)
  • ALLERGENS — множинний список: глютен, лактоза, горіхи, морепродукти, яйця, соя. Фільтрація по алергенах через CIBlockElement::GetList() з PROPERTY_ALLERGENS у фільтрі
  • PRICE — числове. Не через модуль catalog, якщо не потрібен кошик — звичайна властивість інфоблоку. Якщо потрібна онлайн-оплата — підключення до торговельного каталогу через CCatalog::Add()
  • PHOTO — файл. Основне фото страви. Додаткові фото — множинна властивість MORE_PHOTOS
  • IS_NEW — чекбокс. Позначка «Новинка» для виділення в списку
  • IS_SPICY — чекбокс. Позначка гострої страви
  • STOP_LIST — чекбокс. Страва тимчасово недоступна (закінчився інгредієнт). Елемент не видаляється, а приховується за фільтром у шаблоні компонента
  • SORT_ORDER — числове. Порядок всередині розділу, дозволяє шеф-кухарю через адмінку виставити фірмові страви першими

Для ресторанів із сезонним меню додається властивість SEASON (множинний список: весна, літо, осінь, зима) та фільтрація за поточним сезоном у component.php.

Бронювання столиків

Кастомний компонент project:table.reservation з формою: дата, час, кількість гостей, ім'я, телефон, коментар. Дані записуються в Highload-блок «Бронювання». Столики — окремий Highload-блок. При бронюванні компонент перевіряє доступність: вибірка з Highload-блоку бронювань по DATE + TIME з вікном ±2 години, зіставлення з місткістю вільних столиків. Якщо вільних столиків немає — пропозиція найближчого доступного часу.

Інтеграція з Бітрікс24 CRM: кожне бронювання створює лід через CRest::call('crm.lead.add', [...]). Хостес бачить бронювання в CRM та підтверджує їх. Статус ліда «Підтверджено» → обробник оновлює STATUS у Highload-блоці → клієнту приходить SMS.

Фотогалерея та оптимізація зображень

Фуд-фотографія — важкі файли (5-10 МБ). На сайті потрібні три розміри: thumbnail (400x300), середній (800x600), full-size (1600x1200). Ресайз через CFile::ResizeImageGet(). Для WebP — конвертація через imagewebp(). srcset для Retina:

<img
  src="/upload/resize_cache/menu/800x600/dish.webp"
  srcset="/upload/resize_cache/menu/400x300/dish.webp 400w,
          /upload/resize_cache/menu/800x600/dish.webp 800w,
          /upload/resize_cache/menu/1600x1200/dish.webp 1600w"
  sizes="(max-width: 640px) 400px, (max-width: 1024px) 800px, 1600px"
  loading="lazy"
  alt="Меню ресторану: стейк рібай — опис страви"
>

Атрибут loading="lazy" — нативне ліниве завантаження. Для старих браузерів — IntersectionObserver. На сторінці меню з 50+ стравами це економить 30-40 МБ початкового завантаження.

Mobile-first: 80% трафіку з телефонів

За даними дослідження компанії DataReportal, понад 80% відвідувачів ресторанних сайтів заходять з мобільних пристроїв. Шаблон будується mobile-first:

  • Меню категорій — горизонтальний скрол з overflow-x: auto, не випадаючий список
  • Картка страви — фото на всю ширину, назва, вага, ціна. Кнопка «Додати» зафіксована внизу екрану через position: sticky
  • Форма замовлення — мінімум полів. Телефон + адреса. Ім'я та коментар — опціонально. Автозаповнення адреси через Dadata API (POST https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address)
  • Форма бронювання — нативні <input type="date"> та <input type="time"> замість кастомних datepicker-ів

Адаптивність — CSS Grid + Flexbox. Breakpoint-ів три: 375px, 768px, 1280px. Тестування через Lighthouse: цільові показники Performance > 90, LCP < 2.5s.

Мультимовне меню

Для ресторанів у туристичних зонах — меню кількома мовами. Реалізується через окремий сайт в системі багатосайтовості: LID = s1 для української, s2 для англійської. Інфоблоки прив'язані до обох сайтів, властивості NAME_EN, DESCRIPTION_EN — додаткові текстові властивості. Різні URL (/menu/ та /en/menu/), коректні hreflang-теги, незалежні SEO-налаштування.

Schema.org: Restaurant + Menu

У result_modifier.php формується JSON-LD розмітка для Rich Snippets у пошуковій видачі. Типи Restaurant, Menu, MenuItem — окремі сутності Schema.org.

Акції та спецпропозиції

Інфоблок «Акції» (тип promotions). Властивості: DATE_START, DATE_END, PROMO_TYPE, DISCOUNT_PERCENT, LINKED_DISHES. Виведення на головній через news.list з фільтром по датах. Для бізнес-ланчу — окремий розділ меню з обмеженням за часом (12:00-16:00).

Заходи ресторану

Інфоблок «Заходи» — для анонсів: жива музика, тематичні вечори, дегустації. Виведення — стрічка на головній (три найближчі заходи) та окрема сторінка /events/. Минулі заходи переміщуються в архів автоматично.

Інтеграція з зовнішніми системами

Онлайн-замовлення ресторан та інтеграція з POS-системами

Це технічно найнавантаженіша частина проєкту. Ресторан працює з касовою системою — iiko, r_keeper або Poster. Сайт має не просто приймати замовлення, а передавати їх у касу в реальному часі та отримувати зворотний зв'язок: підтвердження, час приготування, статус.

Архітектура взаємодії з iiko:

iiko надає iiko Transport API (раніше iiko Biz API). Авторизація — по apiLogin, отримання токена через POST /api/1/access_token. Токен живе 60 хвилин, кешується в $_SESSION або в Highload-блоці з TTL.

Створення замовлення — POST /api/1/deliveries/create. Тіло запиту містить:

{
  "organizationId": "...",
  "order": {
    "phone": "+380...",
    "orderTypeId": "...",
    "items": [
      {
        "productId": "iiko-product-uuid",
        "amount": 2,
        "modifiers": [...]
      }
    ],
    "address": { "street": "...", "house": "...", "flat": "..." },
    "comment": "Без цибулі"
  }
}

Критичний момент — маппінг productId. В інфоблоці Бітрікс у кожної страви зберігається властивість IIKO_PRODUCT_ID (рядок, UUID з iiko). При синхронізації меню через GET /api/1/nomenclature завантажується повний каталог iiko та зіставляється з елементами інфоблоку за цим UUID. Синхронізація запускається агентом CAgent раз на 15 хвилин або по вебхуку з iiko.

Синхронізується з iiko в Бітрікс:

  • Наявність страви (стоп-лист). iiko надсилає POST на webhook-endpoint /api/iiko-stoplist/. Обробник оновлює властивість STOP_LIST у відповідного елемента інфоблоку через CIBlockElement::SetPropertyValuesEx()
  • Ціна. Якщо ресторан змінює ціни в касі, вони мають приїхати на сайт. Обробник в агенті порівнює ціни з /api/1/nomenclature з PRICE в інфоблоці та оновлює розбіжності
  • Модифікатори (добавки, гарніри). Зберігаються в окремому інфоблоці «Модифікатори» з властивістю IIKO_MODIFIER_ID

Відправляється з сайту в iiko:

  • Замовлення з позиціями, адресою, коментарем
  • Тип оплати (онлайн або при отриманні)
  • Промокод, якщо є — знижка розраховується на стороні iiko

Інтеграція з r_keeper:

r_keeper використовує UCS DeliveryPOS API. Принцип аналогічний, але протокол — XML-RPC. Запити обгорнуті в XML-конверт, відповіді парсяться через SimpleXMLElement. Маппінг товарів — по MenuItemID. Основна складність — r_keeper вимагає VPN-тунель до сервера ресторану, тоді як iiko працює через хмару.

Інтеграція з Poster POS:

Poster надає REST API з OAuth-авторизацією. Створення замовлення — POST /api/incomingOrders.createIncomingOrder. Poster простіший в інтеграції: JSON API, хмарне розгортання, webhook для оновлення статусу замовлення. Маппінг — по product_id з Poster.

Обробка статусів замовлення: два підходи — polling (агент раз на 60 секунд) або webhook (переважний для iiko та Poster). Статуси: «Прийнято», «Готується», «В дорозі», «Доставлено». Відображаються клієнту на сторінці /my-orders/ через AJAX-опитування кожні 30 секунд.

Інтеграція з агрегаторами доставки

Яндекс.Їжа та Delivery Club надають API для ресторанів-партнерів. Інтеграція двостороння:

  • Вивантаження меню — формування XML/JSON-фіда з позиціями, цінами, фото, стоп-листом. Фід генерується агентом раз на 30 хвилин з інфоблоку «Меню»
  • Прийом замовлень — webhook від агрегатора на /api/aggregator-order/. Обробник створює замовлення в Highload-блоці та передає в POS-систему

Етапи та вартість розробки

  1. Проєктування (1-2 тижні) — структура інфоблоків, схема інтеграції з POS, прототипи сторінок, маппінг даних
  2. Дизайн (1-2 тижні) — макети: головна, меню, бронювання, доставка, акції
  3. Бекенд (2-4 тижні) — інфоблоки, компоненти, інтеграція з POS, CRM, обробка замовлень
  4. Фронтенд (1-3 тижні) — адаптивні шаблони, оптимізація зображень, форми, AJAX-оновлення
  5. Інтеграції (1-2 тижні) — POS, агрегатори, SMS, платіжна система
  6. Тестування (1-2 тижні) — функціональне, тестові замовлення, мобільне, навантажувальне
  7. Запуск (3-5 днів) — деплой, моніторинг синхронізації, перевірка на реальних замовленнях

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

  • Документація з архітектури та API
  • Доступи та демо-доступ для замовника
  • Навчання адміністратора та офіціантів
  • Підтримка протягом 30 днів після запуску

Орієнтовна вартість

Масштаб проєкту Терміни Вартість Економія при виборі пакету «Повна система»
Сайт-вітрина з меню та бронюванням 3-5 тижнів від $3,000
Сайт з онлайн-замовленням та інтеграцією POS 6-9 тижнів від $8,000 до $2,000 порівняно з повною системою
Повна система: замовлення, POS, агрегатори, мультимовність 8-12 тижнів до $15,000

Терміни та вартість залежать від обраної POS-системи, кількості мов та вимог до особистого кабінету. Пишіть нам — оцінимо ваш проект безкоштовно.

Як правильно проектувати інфоблоки?

Ми бачимо десятки проєктів, де неправильна структура інфоблоків перетворює сайт на гальмо. Типовий сценарій: замовник просить «каталог товарів». Розробник створює один інфоблок catalog, закидає туди 15 властивостей. Через півроку — 40 властивостей, 8 з яких використовуються лише для однієї категорії. Фільтр гальмує, таблиця b_iblock_element_property розрослася до мільйонів рядків, CIBlockElement::GetList виконується 3 секунди. Наслідки — падіння конверсії, втрата клієнтів, додаткові витрати на оптимізацію. В одному проєкті після рефакторингу каталогу час генерації сторінки знизився з 4,2 до 0,8 секунди, а вартість підтримки значно скоротилася — за рахунок усунення надлишкових запитів та агентів.

Наш підхід: проектуємо інфоблоки до першого рядка коду. Окремі інфоблоки під сутності (товари, категорії, бренди), властивості-довідники через HL-блоки, торгові пропозиції для SKU. Це закладає продуктивність на роки вперед. Якщо хочете отримати попередній аудит вашої схеми інфоблоків — зв'яжіться з нами, розберемо типові помилки та надамо рекомендації.

Чому 1С-Бітрікс вигідніший за альтернативи?

Вибір CMS диктується не уподобаннями, а бізнес-завданнями. Ось ключові аргументи:

  • Нативний обмін з 1С — модуль catalog.import.1c забезпечує двосторонній обмін товарами, цінами, залишками та замовленнями через CommerceML. Без сторонніх модулів. Це в 5 разів швидше, ніж розробка власного обміну на OpenCart або WordPress. Економія на інтеграції — до 200 000 грн порівняно з кастомними рішеннями.
  • Проактивний захист — модуль security включає WAF, контроль цілісності файлів, захист від SQL-ін'єкцій, двофакторну автентифікацію. Для проєктів з вимогами ФСТЭК — сертифіковане рішення (згідно з Wikipedia, це стандарт для корпоративних систем).
  • Модульна архітектура — підключаємо лише потрібні модулі: iblock, catalog, sale, search. Менше модулів — менше запитів до БД на кожен хіт.
  • Регулярні патчі — вендор випускає security-патчі, закриваючи вразливості швидше, ніж open-source проєкти (середній час виправлення CVE — 2 тижні). Офіційна документація по модулях доступна на сайті розробника.

Що дають HL-блоки і як ми прискорюємо каталог

Highload-блоки — це альтернатива розширеним властивостям інфоблоків, коли список значень може зростати до тисяч записів. Типовий приклад: виробники, країни, кольори. Якщо зберігати їх як властивості-списки в інфоблоці, кожна фільтрація викликає повне сканування таблиці b_iblock_property_enum. З HL-блоками вибірка йде по індексу — час відповіді фільтра знижується з 1–2 секунд до 50 мс. Продуктивність HL-блоків у 8 разів вища за властивості-списки інфоблоків. Ми використовуємо HLB компонент і кастомні запити через Bitrix\Highloadblock\DataManager. Це особливо критично для каталогів з 100 000+ товарами.

З нашої практики — проєкт інтернет-магазину з 500 000 товарів. Стандартний фільтр по бренду виконувався 4 секунди. Сервер не витримував навантаження в 50 одночасних запитів — сторінки падали. Ми перевели довідник брендів у HL-блок, додали теговане кешування на 15 хвилин і налаштували агент для скидання кешу при зміні. Після доопрацювання час фільтрації склав 120 мс, середній LCP сторінки — 1,8 секунди. Проєкт працює стабільно без збоїв.

Що входить у розробку сайту на 1С-Бітрікс

Кожен проєкт включає повний комплект документації та артефактів, що виключає втрату знань після передачі.

  • Технічне завдання — user stories, діаграми інфоблоків, схеми інтеграцій.
  • Вихідний код у Git — з історією комітів, тегами релізів, правилами гілкування.
  • Адміністративна документація — опис кастомних компонентів, інструкції з розгортання, перелік агентів і подій.
  • Навчання співробітників — до 3 годин вебінару: панель управління, робота з замовленнями, налаштування цін. Записуємо, щоб можна було переглянути.
  • Доступ до staging на час розробки — тестуєте самостійно до деплою на продуктив.
  • Гарантійна підтримка — виправлення помилок коду протягом 30 днів після запуску. Післягарантійні абонентські пакети з SLA (реакція 2 години, рішення 8 годин).

Наш процес і технології

Тип проєкту Терміни Складність Ключові особливості
Корпоративний сайт від 1 місяця Середня Каталог, новини, форми, CRM-інтеграція
Інтернет-магазин від 2 місяців Висока 54-ФЗ, маркетплейси, обмін з 1С, SKU
B2B-портал від 3 місяців Дуже висока Персональні ціни, документообіг, Bizproc
Лендінг від 2 тижнів Низька LCP < 2с, композитний кеш, статика
Багатосайтова структура від 1,5 місяців Висока Роздільний контент, спільний каталог, hreflang

Стек: верстка mobile-first, тестуємо на фізичних пристроях (iPhone, iPad, Android). Використовуємо BrowserStack для Safari на iOS. Продуктивність — LCP < 2,5 с, FID < 100 мс, CLS < 0,1. Включаємо композитний сайт (composite), CDN, теговане кешування, WebP/AVIF, lazy loading. SEO — Schema.org через JSON-LD, автогенерація sitemap.xml модулем seo, canonical і hreflang для мультимовних версій. robots.txt закриваємо /bitrix/ від індексації. CI/CD — Git, автодеплой через GitLab CI, staging. Міграції бази — модуль sprint.migration з версіонуванням.

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

  1. Аналітика — вивчаємо конкурентів, збираємо вимоги, малюємо прототипи в Figma. На виході — ТЗ з user stories.
  2. Дизайн — UI/UX з дизайн-системою. Компоненти перевикористовуються.
  3. Розробка — пишемо компоненти з кастомними шаблонами в local/templates/. Бізнес-логіку виносимо в модулі local/modules/.
  4. Тестування — функціональне, кросбраузерне, навантажувальне (до 1000 запитів). Критичні баги виправляємо до запуску.
  5. Запуск — деплой на прод, моніторинг через UptimeRobot, алерти в Telegram. Усуваємо перші 48 годин.

Інтеграції, мультимовність і редизайн

Напрямок Сервіси
CRM та аналітика Бітрікс24 (нативна), amoCRM, Roistat, Calltouch, Mindbox
Платежі ЮKassa, CloudPayments, Тінькофф, Apple Pay, Google Pay
Фіскалізація 54-ФЗ АТОЛ, OrangeData — налаштування через sale.cashbox
Логістика СДЕК, Boxberry, ПЕК, Укрпошта, Яндекс.Доставка
Комунікації JivoSite, Carrot Quest, SendPulse
  • Повна локалізація через мовні файли lang/ і механізм SITE_ID. hreflang для кожної версії. Регіональні версії з різними цінами та контентом — визначення за IP (main.geo) або ручний вибір. Мультидоменність — єдине управління кількома доменами.

  • Редизайн без втрати позицій: аудит продуктивності (PageSpeed, WebPageTest), SEO (Screaming Frog). Новий шаблон у local/templates/ із збереженням URL-структури. 301-редиректи лише якщо URL змінюється суттєво. Оновлення ядра, перехід на D7 ORM, реструктуризація інфоблоків, міграція через sprint.migration з Git.

Типові помилки при проектуванні інфоблоків
  • Один інфоблок на всі сутності замість окремих під товари, категорії, бренди.
  • Використання властивостей-списків замість HL-блоків для довідників з великою кількістю записів.
  • Відсутність індексів на полях, що використовуються у фільтрації каталогу.
  • Нехтування тегованим кешуванням — призводить до скидання всього кешу при зміні одного елемента.

Гарантія та підтримка

Ми працюємо з 1С-Бітрікс 12+ років, реалізували 500+ проєктів. У штаті сертифіковані розробники. Фіксована вартість у договорі — без сюрпризів. Гарантійний період покриває помилки коду. Після — абонентські пакети з SLA (час реакції — 2 години, рішення — 8 годин). Моніторинг доступності 24/7, алерти в Telegram. За потреби отримайте попередній аудит — зв'яжіться з нами через форму на сайті або напишіть у чат, відповімо протягом години. Замовте розробку під ключ — ми спроєктуємо інфоблоки, інтегруємо 1С і розженимо каталог. Якщо вже є сайт на іншій CMS — замовте аудит продуктивності та міграцію на Бітрікс.