Розробка сайту оптової компанії на 1С-Бітрікс

Типова ситуація: оптовий закупник надсилає список з 50-200 артикулів в Excel, очікуючи, що сайт дозволить завантажити їх однією кнопкою. Але стандартний магазин на Бітрікс не вміє працювати з множинними типами цін, автоматично прив'язаними до груп користувачів, і не завантажує файли безпосередньо в
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка сайту оптової компанії на 1С-Бітрікс
Складний
від 1 тижня до 3 місяців

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

Часті запитання

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1460
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    810
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1166

Типова ситуація: оптовий закупник надсилає список з 50-200 артикулів в Excel, очікуючи, що сайт дозволить завантажити їх однією кнопкою. Але стандартний магазин на Бітрікс не вміє працювати з множинними типами цін, автоматично прив'язаними до груп користувачів, і не завантажує файли безпосередньо в кошик. В результаті — ручне введення позицій, помилки та втрата часу. Ми за 10+ років розробили понад 50 рішень, які перетворюють сайт на повноцінний B2B-інструмент: інтеграція з 1С, власними REST-ручками для залишків та кредитних лімітів, гнучка система цін і документів. Зв'яжіться з нами — за 2 дні оцінимо ваш проект.

B2B-каталог: типи цін та оптові правила

Основа B2B-каталогу — множинні типи цін. У таблиці b_catalog_group створюються цінові групи:

Тип ціни Для кого
Роздрібна Неавторизовані користувачі
Дрібний опт Дилери категорії C
Середній опт Дилери категорії B
Крупний опт Дилери категорії A
Спеціальна Ключові клієнти

Кожен тип ціни прив'язується до групи користувачів через налаштування модуля catalog. Авторизований дилер бачить лише свою колонку цін. Додатково на рівні товару налаштовуються мінімальна партія, кратність замовлення та одиниця виміру — властивості інфоблоку, контрольовані в кошику.

Як налаштувати множинні типи цін для дилерів?

Ми підключаємо кілька типів цін через штатний функціонал «Торговий каталог» → «Типи цін» → «Групи покупців». Для кожного типу створюємо правило відображення: ціна показується лише тим групам, які прив'язані. Якщо дилеру потрібна знижка за обсягом, додаємо правила кошика з умовами на суму замовлення. Це дозволяє робити порогові знижки без додаткового коду.

Авторизація дилерів та розмежування доступу

Реєстрація дилера — не самостійна, а за заявкою. Схема:

  1. На сайті — форма заявки: ІПН, назва компанії, контактна особа, сфера діяльності, передбачуваний обсяг закупівель.
  2. Заявка потрапляє в CRM або в адмінку (розділ «Користувачі» → «Заявки на реєстрацію»).
  3. Менеджер перевіряє контрагента, створює обліковий запис і призначає групу (дрібний/середній/крупний опт).
  4. Дилер отримує доступ до особистого кабінету і бачить каталог зі своїми цінами.

Розмежування асортименту (не тільки цін) реалізується через права доступу до розділів інфоблоку. Наприклад, група «Крупний опт» бачить розділ «Ексклюзивні колекції», недоступний дрібним дилерам.

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

Особистий кабінет виходить далеко за рамки стандартного sale.personal.section. Ключові розділи:

  • Історія замовлень — з фільтрацією за датою, статусом, сумою. Повторне замовлення в один клік.
  • Рахунки на оплату — PDF-документи, сформовані модулем sale або передані з 1С.
  • Акти звірки — файли, що завантажуються менеджером або генеруються автоматично з 1С.
  • Накладні та УПД — прив'язані до замовлень, доступні для завантаження.
  • Кредитний ліміт — відображення поточного ліміту, використаної суми та доступного залишку.
  • Відстрочка платежу — інформація про строки та умови.

Документи зберігаються в Highload-блоці Documents: тип документа, номер, дата, файл, прив'язка до замовлення та контрагента. Завантаження з 1С — через REST API за розкладом. Формування PDF рахунків на стороні Бітрікс — через бібліотеку mPDF або TCPDF, що підключається в обробнику події OnSaleOrderSaved. Шаблон рахунку включає реквізити компанії, таблицю товарів, підсумки, QR-код для оплати.

Інтеграція з 1С: CommerceML + REST

Обмін з 1С — ядро оптового сайту. Два канали: CommerceML (штатний обмін):

  • Номенклатура → інфоблок товарів.
  • Ціни за типами → b_catalog_price.
  • Залишки за складами → b_catalog_store_product.
  • Замовлення: Бітрікс → 1С (вивантаження) і назад (статуси, відвантаження).

REST API (для оперативних даних):

  • Актуальні залишки — запит до 1С при відкритті картки товару (з кешуванням на 5–10 хвилин).
  • Кредитний ліміт контрагента — запит при авторизації та при оформленні замовлення.
  • Документи — вивантаження нових рахунків та актів за розкладом.

Deep-dive: B2B-кошик із завантаженням Excel та типами цін

Стандартний кошик Бітрікс розрахований на роздрібного покупця: обрав товар, натиснув «В кошик», перейшов до оформлення. У B2B-сценарії закупник працює інакше. Він приходить з готовим списком з 50–200 позицій і хоче завантажити його за одну дію.

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

На сторінці «Швидке замовлення» — текстове поле, куди вводяться пари «артикул — кількість» по одній на рядок:

ART-001 24 ART-002 48 ART-003 12 

При відправці серверний обробник парсить рядки, шукає товари за властивістю ARTICLE в інфоблоці (через CIBlockElement::GetList з фільтром), перевіряє наявність і додає в кошик через \Bitrix\Sale\Basket::addItem(). Якщо артикул не знайдено — рядок підсвічується червоним з поясненням.

Приклад обробника швидкого замовлення
// Парсинг рядків $lines = explode("\n", $_POST['items']); $basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(), SITE_ID); foreach ($lines as $line) { list($art, $qty) = explode(' ', trim($line)); $res = CIBlockElement::GetList([], ['PROPERTY_ARTICLE' => $art], false, false, ['ID']); if ($el = $res->Fetch()) { $item = $basket->createItem('catalog', $el['ID']); $item->setField('QUANTITY', (int)$qty); } } $basket->save(); 

Завантаження Excel-файлу

Більш просунутий варіант — завантаження XLS/XLSX. Обробник на стороні сервера:

  1. Прийом файлу — через стандартне завантаження Бітрікс (CFile::SaveFile).
  2. Парсинг — бібліотека PhpSpreadsheet (підключається через Composer). Очікуваний формат: стовпець A — артикул, стовпець B — кількість. Перший рядок — заголовок (пропускається).
  3. Валідація — перевірка кожного рядка: існування артикула, доступність товару для групи користувача, відповідність мінімальній партії та кратності.
  4. Формування результату — таблиця з колонками:
Артикул Назва Запитано Скориговано Залишок Ціна Сума Статус
ART-001 Товар А 24 24 150 OK
ART-002 Товар Б 48 48 30 Частково (зал. 30)
ART-999 12 Не знайдено
  1. Підтвердження — користувач бачить результат, коригує кількість, підтверджує додавання в кошик.

Обробка типів цін у кошику

При додаванні товару в кошик ціна визначається автоматично на основі групи користувача. Логіка:

  • Визначається група авторизованого користувача (CUser::GetUserGroupArray()).
  • За групою визначається доступний тип ціни (CCatalogGroup::GetGroupsList()).
  • З b_catalog_price вилучається ціна для товару за потрібним типом.
  • Якщо для товару налаштовані знижки за кількістю (модуль «Правила кошика» — sale.discount), вони застосовуються при перерахунку.

Додаткова логіка — порогові знижки: при замовленні на суму понад певний поріг автоматично застосовується додаткова знижка. Налаштовується через правила кошика з умовою «Сума кошика більше N».

Як працює перевірка кредитного ліміту?

На етапі оформлення замовлення перевіряється кредитний ліміт контрагента. Дані беруться з 1С через REST API. Якщо сума замовлення перевищує доступний ліміт — виводиться попередження, але замовлення можна відправити (на розсуд менеджера). Реалізація — обробник події OnSaleOrderBeforeSaved, який виконує запит до 1С і записує результат у властивість замовлення.

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

При розробці оптового сайту ми надаємо:

  • Технічне завдання з описом логіки типів цін і прав.
  • Налаштований обмін з 1С (CommerceML + REST).
  • Особистий кабінет дилера з документами.
  • Кошик з підтримкою Excel і швидкого замовлення.
  • Інтеграцію з платіжними системами та службами доставки.
  • Вихідний код та доступи до сервера.
  • Керівництво адміністратора та навчання співробітників.
  • Гарантійну підтримку 3 місяці після запуску.

Технічна зведення

Компонент Рішення
Каталог bitrix:catalog з фасетним індексом
Фільтрація bitrix:catalog.smart.filter + AJAX
Кошик Кастомний компонент з підтримкою Excel
Інтеграція CommerceML (каталог) + REST API (залишки, ліміти)
Документи Highload-блок + mPDF
Права доступу Групи користувачів → типи цін + розділи інфоблоку

Оптовий сайт на Бітрікс — це передусім backend: обмін з 1С, типи цін, права, документообіг. Докладніше про формат обміну — CommerceML. Фронтенд вторинний — інтерфейс має бути функціональним і швидким, а не ефектним. Замовте розробку — отримаєте інструмент, який реально економить час ваших дилерів. Зв'яжіться з нами для консультації по вашому проекту.