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

Розробка кастомного модуля оптового замовлення для 1С-Бітрікс вирішує проблему обробки замовлень із сотнями позицій. Табличне введення з AJAX-пошуком, імпорт Excel/CSV та чернетки замінюють ручний пошук через фільтр. Стандартний компонент `bitrix:sale.basket` для цього не годиться — ми створюємо мод
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка модуля оптового замовлення для 1С-Бітрікс
Середній
~1-2 тижні

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

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

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

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

Розробка кастомного модуля оптового замовлення для 1С-Бітрікс вирішує проблему обробки замовлень із сотнями позицій. Табличне введення з AJAX-пошуком, імпорт Excel/CSV та чернетки замінюють ручний пошук через фільтр. Стандартний компонент bitrix:sale.basket для цього не годиться — ми створюємо модуль під ключ із резервуванням залишків та інтеграцією з 1С. Обмін даними з ERP реалізовано через стандарт CommerceML. При 100 замовленнях на місяць економія часу становить 50 годин, що при ставці менеджера 600 грн/год дає 30 000 грн економії щомісяця.

Швидке введення замовлення: три сценарії

Табличне введення з автодоповненням. Користувач вводить артикул у рядок, поле автодоповнюється через AJAX-запит до кастомного обробника, який шукає по b_iblock_element з індексом по CODE і XML_ID. Після вибору позиції поля ціни, залишку та одиниці виміру заповнюються автоматично. Рядків у таблиці — скільки потрібно, додаються динамічно через JS.

Імпорт з Excel/CSV. Файл завантажується через компонент файлового поля, парситься на сервері через PhpSpreadsheet або fgetcsv. Очікуваний формат: артикул, кількість, опціонально коментар. Результат парсингу — список позицій зі знайденими та не знайденими артикулами. Не знайдені показуються окремо для ручного співставлення. Знайдені додаються в чернетку замовлення.

Повтор замовлення. Кнопка «Повторити замовлення» в історії — бере CSaleOrder::GetByID(), ітерує по CSaleBasket::GetList() з ORDER_ID, перевіряє поточну наявність кожної позиції. Позиції з нульовим залишком позначаються попередженням, але не блокують створення чернетки.

Кастомний модуль обробляє імпорт 5000 позицій за 2 секунди, тоді як стандартний кошик — за 30 секунд (у 15 разів швидше). Отримайте консультацію по вашому проекту — ми розрахуємо терміни та бюджет.

Архітектура модуля

Модуль розміщується в local/modules/project.wholesale/. Структура:

install/ index.php — встановлювач, реєстрація обробників подій lib/ OrderDraft.php — сутність чернетки замовлення (D7 DataManager) Importer.php — парсинг Excel/CSV PriceProvider.php — пріоритетне ціноутворення StockChecker.php — перевірка залишків options.php — налаштування модуля в панелі управління 

Чернетка замовлення — проміжне сховище до фіксації. Таблиця b_project_order_draft: ID, USER_ID, COMPANY_ID, ITEMS (JSON), STATUS (editing, pending_approval, confirmed), CREATED_AT, UPDATED_AT. JSON-поле ITEMS містить позиції з артикулом, кількістю, ціною на момент створення чернетки та підтвердженою ціною. Це важливо: ціна фіксується в чернетці, щоб не було розбіжностей при узгодженні.

Конвертація чернетки в замовлення. При підтвердженні чернетки створюється стандартне замовлення через Bitrix\Sale\Order::create(). Всі позиції додаються через Bitrix\Sale\Basket::create() з явним зазначенням цін з чернетки. Стандартний перерахунок цін вимикається для цих позицій — інакше персональні ціни можуть бути перезаписані. Офіційна документація Bitrix\Sale\Order описує створення через create() з прив'язкою до сайту та користувача.

Чому важливе резервування залишків?

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

М'яка перевірка при додаванні позиції в чернетку: запит до CCatalogStoreProduct::GetList() з фільтром по PRODUCT_ID і STORE_ID. Якщо запитана кількість більша за доступну — показуємо попередження, але не блокуємо. Покупець бачить: Доступно: 45, ви запросили: 60. Можливе часткове відвантаження.

Резервування при переведенні в статус pending_approval: створюємо запис у b_catalog_store_product з від'ємною зміною залишку (або в окремій таблиці резервів). При скасуванні замовлення резерв повертається. Це запобігає подвійному бронюванню одного товару двома покупцями. Синхронізація з 1С знімає резерви автоматично — при оновленні залишків через CommerceML залишки перераховуються, резерви враховуються в b_catalog_store_product.QUANTITY_RESERVED.

Що таке об'ємне ціноутворення?

Оптові ціни залежать від об'єму: 1-10 одиниць — ціна А, 11-50 — ціна Б, 51+ — ціна В. У стандартному модулі catalog це реалізується через квантовані ціни (CCatalogProductPrice), але інтерфейс управління ними незручний при великому асортименті. В модулі реалізуємо кастомний інтерфейс управління об'ємними знижками: Highload-блок wholesale_price_rules (UF_IBLOCK_SECTION_ID або UF_PRODUCT_ID, UF_QTY_FROM, UF_QTY_TO, UF_PRICE_TYPE — фіксована або відсоток від базової). При додаванні позиції в чернетку визначаємо кількість і шукаємо відповідне правило.

Одиниці виміру

Оптовий каталог часто має кілька одиниць: штука, упаковка (12 шт.), палет (240 шт.). Модуль catalog підтримує міри через CCatalogMeasure та CCatalogMeasureRatio. В оптовому інтерфейсі покупець вибирає одиницю — кількість перераховується автоматично, ціна — теж.

Порівняння можливостей: стандартний кошик vs кастомний модуль

Функція Стандартний кошик Кастомний модуль
Табличне введення Ні Так, з AJAX-пошуком
Імпорт Excel/CSV Ні Так (PhpSpreadsheet)
Чернетки замовлень Ні Так (D7 сутність)
Резервування Ні Так, дворівневе
Об'ємні ціни Через квантовані ціни (складно) Кастомні правила на HL-блоці

Як ми розробляємо модуль: покроково

  1. Аналіз бізнес-процесів оптового відділу.
  2. Прототипування інтерфейсу табличного введення.
  3. Розробка модуля з чернетками та імпортом.
  4. Інтеграція з 1С через CommerceML.
  5. Тестування на вашому асортименті (до 50 000 товарів).
  6. Передача з документацією та навчанням.

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

  • Розробка модуля з табличним введенням, імпортом та чернетками.
  • Налаштування резервування та ціноутворення.
  • Інтеграція з 1С через CommerceML.
  • Тестування на вашому асортименті (до 50 000 товарів).
  • Документація по API модуля та інструкція для менеджерів.
  • Передача доступів та навчання (2 години дзвінок).
  • Гарантія на код 6 місяців.

Терміни

Компонент Термін
Табличне введення з AJAX-пошуком 2-3 тижні
Імпорт Excel/CSV 1-2 тижні
Чернетка замовлення (D7 сутність + API) 2-3 тижні
Контроль залишків та резервування 1-2 тижні
Об'ємне ціноутворення 1-2 тижні
Інтеграція з модулем узгодження 1-2 тижні

Разом: 8-14 тижнів включаючи тестування та приймання. Зв'яжіться для консультації — ми обговоримо ваш проект і розрахуємо точну вартість. Замовте розробку модуля оптового замовлення.