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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка функционала запроса цены (RFQ) на 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

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

На B2B-сайтах цены часто не публикуются открыто: они зависят от объёма, региона, условий договора или просто регулируются вручную. Вместо кнопки «Купить» нужна кнопка «Запросить цену» — RFQ (Request for Quotation). Стандартный модуль sale Битрикс под эту задачу не подходит: он заточен под публичную цену и немедленную оплату. 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() (внутренние уведомления Битрикс) и 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 (сделки, товарные позиции)
  • Раздел истории заявок в личном кабинете покупателя