Розробка оптового розділу інтернет-магазину на 1С-Бітрікс

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

Розробка оптового розділу інтернет-магазину на 1С-Бітрікс

Оптовий розділ всередині роздрібного магазину — це не окремий вебсайт, а паралельна комерційна логіка для авторизованих B2B-клієнтів. Один каталог, одна адміністративна панель, але різні ціни, правила оформлення та документообіг. У Бітрікс ця задача вирішується через типи цін, групи користувачів та доробку модуля sale.

Типи цін і права доступу: фундамент B2B

Вся цінова архітектура B2B будується навколо таблиці b_catalog_group. Кожна запис — окремий тип ціни: «Роздрібна», «Оптова», «Дилерська», «VIP». Привязка типу ціни до групи користувачів задається у настройках модуля catalog — розділ «Типи цін», колонка «Групи покупців».

Механізм працює так:

  1. Користувач авторизується та потрапляє у групу (наприклад, «Оптовики»)
  2. Компонент каталогу викликає CCatalogProduct::GetOptimalPrice(), який перебирає доступні типи цін для поточного користувача
  3. Повертається найменша з доступних цін (або ціна з найвищим пріоритетом — залежить від настройки)

На практиці одного механізму типів цін недостатньо. Реальні оптові прайс-листи складніші:

  • Індивідуальні скидки — контрагенту А скидка 12%, контрагенту Б — 18%. Рішення: окрема група користувачів на кожного крупного контрагента зі своїм типом ціни, або правила корзини (sale.discount) з умовою за групою.
  • Пороговые ціни — при покупці від 100 штук ціна одна, від 1000 — інша. У стандартному Бітрікс це реалізується через діапазони кількості в цінах товару (b_catalog_price підтримує QUANTITY_FROM / QUANTITY_TO).
  • Валютні ціни — оптові клієнти з різних країн бачать ціни в своїй валюті. Типи цін можна задавати в різних валютах, конвертація — через модуль currency.

Важливий нюанс: тип ціни не привязується до користувача безпосередньо — лише до групи. Якщо потрібна індивідуальна ціна для 200 контрагентів, створювати 200 груп нераціонально. У таких випадках пишеться обробник події OnGetOptimalPrice, який підтягує ціну з зовнішнього джерела (1С, ERP) через кеш.

Сценарій Реалізація у Бітрікс Обмеження
3–5 цінових рівнів Типи цін + групи користувачів Стандартний механізм, працює з коробки
Порогові ціни за кількістю Діапазони у b_catalog_price Не відображаються у карточці без доробки шаблону
Індивідуальний прайс на контрагента Подія OnGetOptimalPrice + зовнішнє джерело Потребує кешування, інакше — запит до 1С на кожний товар
Скидка на категорію для групи Правила корзини sale.discount Не видна у каталозі до додавання в кошик

Мінімальна партія і кратність замовлення

Для оптових товарів необхідні два параметри: мінімальна кількість для замовлення та крок (кратність). У стандартному Бітрікс є поле «Коефіцієнт одиниці виміру» (b_catalog_measure_ratio), але воно працює лише як множник при додаванні в кошик.

Повноцінна реалізація потребує:

  • Властивість інфоблока «Мінімальна партія» — перевіряється при додаванні в кошик через обробник OnSaleBasketItemBeforeUpdate
  • Властивість «Кратність» — кількість округляється вверх до найближчого кратного значення
  • Відображення у карточці товару — замість стандартного поля кількості показується селектор з кроком (10, 20, 30…) або поле з валідацією

Швидкий заказ за артикулом і завантаження з Excel

Оптовий клієнт не листає каталог — він знає артикули. Потрібен інтерфейс швидкого замовлення:

  1. Форма «артикул + кількість» — список рядків, куди вбиваються дані. На стороні сервера артикул матчиться з PROPERTY_CML2_ARTICLE або XML_ID елемента інфоблока, товар додається в кошик.

  2. Завантаження Excel/CSV — клієнт експортує файл з своєї системи обліку. Парсер на стороні Бітрікс (бібліотека PhpSpreadsheet, підключена через Composer) розбирає файл, знаходить товари, формує кошик. Невідповідні артикули показуються у звіті.

  3. Повтор попереднього замовлення — кнопка у особистому кабінеті, яка копіює склад замовлення в поточну корзину. Реалізується через Bitrix\Sale\Basket::loadItemsForOrder().

Кредитні лімити та відстрочка платежу

У B2B оплата часто відбувається постфактум. Механізм кредитного лімиту:

  • У профілі контрагента (розширені властивості користувача або UF_* поля) зберігається лімітом та поточна заборгованість
  • При оформленні замовлення обробник OnSaleOrderBeforeSaved перевіряє: сума замовлення + поточна заборгованість ≤ кредитний лімітом
  • Якщо лімітом перевищений — замовлення не оформляється, користувач бачить повідомлення з сумою доступного залишку
  • Після оплати (зміна статусу оплати через 1С-обмін або вручну) заборгованість пересчитується

Документообіг у особистому кабінеті

Оптовий клієнт очікує побачити у особистому кабінеті:

  • Рахунки на оплату — генеруються автоматично при створенні замовлення. Шаблон PDF збирається через обробник друку (sale_print) або зовнішню бібліотеку (TCPDF/mPDF).
  • Акти звірки — підтягуються з 1С через обмін. Зберігаються як файли, привязані до користувача через highload-блок.
  • Накладні та УПД — аналогічно, експортуються з 1С. Для юридичної значимості можуть підписуватися ЕЦП.
  • Історія замовлень з фільтруванням — за період, статусом, сумою. Стандартний компонент sale.personal.order дорабляється або замінюється кастомним.

Окремий кошик і розділення контексту

Технічно у Бітрікс кошик один на користувача. Якщо клієнт може купувати і в роздріб, і оптом, потрібне розділення:

  • Варіант 1: тип сайту. Два сайти в одній інсталяції Бітрікс — роздрібний та оптовий. Кошики розділяються за FUSER_ID + LID (ідентифікатор сайту). Мінус — дублювання настроїв.
  • Варіант 2: властивість елемента кошика. Додається кастомна властивість BASKET_TYPE = wholesale. При оформленні фільтруються лише оптові позиції. Мінус — складніше у реалізації, потрібна доробка шаблону оформлення.

На практиці перший варіант надійніший: два сайти зі спільним каталогом, різними шаблонами та незалежними кошиками. Перемикання між «вітринами» — за поддоменом або розділом URL.

Інтеграція з 1С для оптового розділу

Обмін з 1С для B2B-розділу включає додаткові сутності, які відсутні у стандартному CommerceML:

  • Контрагенти — синхронізація карточок контрагентів з 1С з профілями користувачів Бітрікс. Маппінг за ІНН або XML_ID.
  • Взаиморасчеты — поточний борг, платежі, кредитний лімітом. Передаються через додаткові XML-вузли або окремий REST-запит.
  • Індивідуальні прайс-листи — якщо ведуться у 1С, потрібен механізм експорту у форматі «контрагент → товар → ціна». Стандартний обмін цього не підтримує — пишеться окремий скрипт обміну.

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