Розробка функціоналу запиту ціни (RFQ) на 1С-Бітрікс

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

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

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

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

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

Розробка функціоналу запиту ціни (RFQ) на 1С-Бітрікс

На B2B-сайтах ціни часто не публікуються відкрито: вони залежать від обсягу, регіону, умов договору або просто регулюються вручну. Замість кнопки «Купити» потрібна кнопка «Запросити ціну» — RFQ (Request for Quotation). Стандартний модуль sale 1С-Бітрікс для цього завдання не підходить: він заточений під публічну ціну і негайну оплату. RFQ — це окремий процес: заявка → обробка менеджером → виставлення комерційної пропозиції → узгодження → замовлення.

Архітектура процесу

RFQ-запит проходить кілька статусів: new → processing → quoted → accepted → rejected → ordered. Після статусу accepted клієнт може оформити замовлення за погодженою ціною через стандартний модуль sale.

Таблиця заявок bl_rfq:

CREATE TABLE bl_rfq (
    id          SERIAL PRIMARY KEY,
    user_id     INT REFERENCES b_user(ID),
    status      VARCHAR(30) DEFAULT 'new',
    manager_id  INT,
    comment     TEXT,
    manager_note TEXT,
    created_at  TIMESTAMP DEFAULT NOW(),
    updated_at  TIMESTAMP DEFAULT NOW(),
    expires_at  TIMESTAMP,
    order_id    INT
);

Позиції заявки bl_rfq_items:

CREATE TABLE bl_rfq_items (
    id          SERIAL PRIMARY KEY,
    rfq_id      INT REFERENCES bl_rfq(id) ON DELETE CASCADE,
    product_id  INT NOT NULL,     -- ID елемента інфоблока
    sku_id      INT,              -- ID торгової пропозиції
    quantity    NUMERIC(10,3),
    unit        VARCHAR(20),
    price_requested NUMERIC(12,2), -- ціна, яку просить клієнт (опціонально)
    price_quoted    NUMERIC(12,2), -- ціна, яку пропонує менеджер
    comment     TEXT
);

Інтерфейс додавання до RFQ

Кнопка «Запросити ціну» замінює кнопку «У кошик» на картках товарів — або співіснує з нею, якщо частина товарів має публічну ціну.

Логіка показу: у result_modifier.php компонента catalog.element перевіряємо властивість товару PROPERTY_PRICE_ON_REQUEST або відсутність ціни в $arResult['ITEM_PRICES']:

$showRFQ = ($arResult['ITEM_PRICES'][0]['PRICE'] ?? 0) === 0
    || $arResult['ITEM']['PROPERTIES']['PRICE_ON_REQUEST']['VALUE'] === 'Y';
$arResult['SHOW_RFQ'] = $showRFQ;

Кнопка надсилає AJAX-запит з product_id, sku_id, quantity до контролера RfqController::addItemAction().

RFQ-кошик

Клієнт може додати кілька позицій перед відправкою — аналог кошика, але для запитів. Дані зберігаються в сесії ($_SESSION['RFQ_ITEMS']) або в таблиці bl_rfq зі статусом draft. При відправці заявки статус змінюється на new, менеджер отримує сповіщення.

Обробка в CRM і сповіщення

При переході заявки в статус new створюється лід або угода в CRM через \Bitrix\Crm\LeadTable::add() або REST API crm.deal.add. До угоди додаються товарні позиції з bl_rfq_items через crm.deal.productrows.set.

Сповіщення менеджеру — через \Bitrix\Im\Notify::send() (внутрішні сповіщення Бітрікс24) і email через \Bitrix\Main\Mail\Event::send() з шаблоном події RFQ_NEW_REQUEST.

Виставлення КП і конвертація в замовлення

Менеджер в адміністративному інтерфейсі заповнює price_quoted для кожної позиції, ставить статус quoted. Клієнт отримує email з посиланням на особистий кабінет, де бачить КП. При натисканні «Прийняти» — статус accepted, після чого створюється замовлення в b_sale_order із зафіксованими цінами через CSaleOrder::Add() з примусовою передачею PRICE у позиціях.

Кейс: дистриб'ютор промислового обладнання

Ситуація: 4 000 SKU без публічних цін, менеджери обробляли запити через email вручну, час відповіді — 2–3 дні.

Реалізація:

  • RFQ-кошик з можливістю додати кілька товарів
  • Автоматичне створення угоди в Бітрікс24 CRM при відправці заявки
  • Особистий кабінет покупця з історією заявок і статусами
  • Email-сповіщення менеджеру (негайно) і клієнту (при зміні статусу)
  • Конвертація прийнятого КП в замовлення однією кнопкою

Результат: час обробки заявки скоротився до 4 годин, менеджери перестали втрачати запити в пошті.

Етап Термін
Проектування схеми і статусної машини 2 дні
Бекенд: таблиці, контролери, агенти 4 дні
Фронтенд: кнопка, RFQ-кошик, особистий кабінет 4 дні
Інтеграція з CRM 2 дні
Email-сповіщення і тестування 2 дні

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

  • Проектування статусної машини RFQ і моделі даних
  • Заміна/доповнення кнопки «У кошик» для товарів без публічної ціни
  • RFQ-кошик з AJAX-управлінням позиціями
  • Адміністративний інтерфейс обробки заявок із виставленням цін
  • Інтеграція з CRM-модулем Бітрікс24 (угоди, товарні позиції)
  • Розділ історії заявок в особистому кабінеті покупця