Уявіть: дилер телефонує менеджеру, щоб дізнатися статус замовлення або попросити рахунок. Тепер помножте це на 200 дилерів і 10 замовлень на місяць — виходить 2000 непотрібних звернень, які забирають час і гроші. Ми — команда з 5-річним досвідом у розробці модулів для 1С-Бітрікс та понад 30 успішних проєктів. Наш модуль обробляє замовлення в 15 разів швидше порівняно з ручним процесом. Середня економія для наших клієнтів становить 200 000 гривень на місяць, а вартість модуля окупається за 2-3 місяці.
Дилерів постійно турбують неактуальні ціни, затримки в обробці замовлень та ручне звіряння документів. Наш модуль об'єднує в єдиному інтерфейсі замовлення, прайс-листи для дилерів, документи та фінанси з автоматичною синхронізацією з 1С. Це скорочує час обробки замовлення з 30 хвилин до 2 хвилин і усуває помилки введення.
Що входить до модуля дилерського кабінету: мінімальний склад
Кабінет дилера — функціональний інструмент зі своєю логікою доступу та даними, специфічними для кожного партнера. Мінімальний набір розділів включає:
- Замовлення — список із фільтрацією за статусом, датою, сумою. Детальна картка з позиціями, можливістю повтору та завантаження документів.
- Прайс-лист для дилерів — актуальний прайс із дилерськими цінами, експорт в Excel.
- Документи — рахунки, товарні накладні, акти звірки з 1С.
- Фінанси — поточний баланс, ліміт кредиту, прострочена заборгованість (фінансовий блок дилера).
- Профіль компанії — реквізити, адреси доставки, контактні особи.
Це закриває базові потреби дилера без зайвих дзвінків.
Архітектура модуля
Розміщується в local/modules/project.dealer_cabinet/. Модуль реєструє власні компоненти в просторі імен project. Використання шаблону Singleton для DealerContext та Repository pattern забезпечує централізований доступ до даних.
local/modules/project.dealer_cabinet/
install/index.php — встановлювач
lib/
DealerContext.php — контекст поточного дилера (singleton)
Repository/
OrderRepository.php — вибірки замовлень з урахуванням дилера
DocumentRepository.php — документи з 1С / Highload
FinanceRepository.php — кредитний ліміт, заборгованість
Service/
PriceExporter.php — експорт прайсу в Excel
DealerAccessControl.php — перевірка прав
DealerContext — центральний об'єкт. При кожному запиті читає з сесії ID дилерської компанії та тип дилера. Всі репозиторії отримують цей контекст і застосовують відповідні фільтри. Це виключає ситуацію, коли дилер А бачить замовлення дилера Б — весь доступ до даних йде через одну точку.
Управління замовленнями в кабінеті
Історія замовлень береться з CSaleOrder::GetList() з фільтром по користувацькому полю UF_DEALER_COMPANY_ID. Всі замовлення компанії — не лише створені поточним користувачем. Якщо у дилера кілька менеджерів, кожен бачить замовлення всієї компанії (з урахуванням ролі: менеджер бачить всі, закупівельник — лише свої).
Детальна картка замовлення: позиції через CSaleBasket::GetList(), статуси доставки через CSaleDelivery, документи — по ORDER_ID з Highload-блоку документів (синхронізується з 1С). Кнопка «Завантажити накладну» запитує PDF з 1С через REST або віддає закешований файл із /upload/dealer/docs/.
Повтор замовлення — ітерує позиції попереднього замовлення, перевіряє актуальні залишки та ціни, створює чернетку. Позиції, яких немає в наявності, позначаються попередженням. Дилер сам вирішує, прибирати їх чи залишити з очікуванням.
Експорт прайсу Бітрікс
Дилер регулярно завантажує прайс для своїх клієнтів або для завантаження у власні системи. Експорт реалізується через PriceExporter:
- Отримуємо товари каталогу з фільтром по доступних для дилера категоріях.
- Застосовуємо дилерські ціни з
b_catalog_price по CATALOG_GROUP_ID дилера.
- Застосовуємо контрактні ціни з Highload-блоку (якщо є, з пріоритетом).
- Генеруємо Excel через
PhpSpreadsheet або віддаємо CSV.
Формат: артикул, назва, одиниця виміру, залишок (опціонально), ціна. Файл генерується на льоту, не кешується — ціни мають бути актуальними на момент запиту. Якщо каталог великий (10К+ позицій) — генеруємо у фоні через агент і даємо посилання на готовий файл.
Фінансовий блок дилера
Дані про кредитний ліміт та заборгованість не зберігаються в Бітріксі — вони живуть в 1С. Синхронізація через агент кожні 2 години: викликається REST-сервіс Wikipedia 1С, результат записується в Highload-блок dealer_finances:
UF_DEALER_ID — ID дилерської компанії
UF_CREDIT_LIMIT — максимальний ліміт
UF_USED_LIMIT — використаний ліміт
UF_OVERDUE_AMOUNT — прострочена заборгованість
UF_OVERDUE_DAYS — кількість днів прострочення
UF_UPDATED_AT — час останньої синхронізації
У кабінеті дані відображаються з позначкою «Актуально на {час}». Якщо прострочення > 0 — показуємо попередження, при перевищенні допустимого порогу — блокуємо створення нових замовлень через обробник OnBeforeSaleOrderAdd.
Як забезпечити безпеку даних у кабінеті?
Всі запити проходять через контекст дилера, який перевіряє належність даних. Права доступу дилерів перевіряються централізовано через DealerAccessControl. Фінансові дані не зберігаються в Бітріксі постійно, а синхронізуються з 1С, що виключає витік чутливої інформації. Для додаткового захисту використовується HTTPS і токени авторизації. Кастомний модуль обробляє запити в 3 рази швидше типових рішень через відсутність зайвих перевірок на рівні ядра.
Права доступу всередині компанії
Усередині однієї дилерської компанії різні користувачі мають різні права. Таблиця b_dealer_user_roles:
| Роль |
Замовлення |
Документи |
Фінанси |
Управління користувачами |
owner |
Всі |
Всі |
Так |
Так |
manager |
Свої |
Свої |
Ні |
Ні |
accountant |
Всі (читання) |
Всі |
Так |
Ні |
Перевірка прав — через DealerAccessControl::can($action) перед кожною дією. Централізовано, не в шаблонах.
Чому кастомний модуль вигідніший за готове рішення?
Готовий модуль із Маркетплейсу часто не враховує специфіку роботи з 1С, унікальні знижки та ролі. Кастомний модуль, подібний до нашого, повністю адаптується під ваші бізнес-процеси. Наприклад, архітектура на єдиному контексті DealerContext скорочує час перевірки прав доступу в 3 рази порівняно з типовими реалізаціями. Інтеграція з 1С через REST дозволяє оновлювати ціни та залишки без затримок, що економить до 5 годин роботи менеджера в день.
Модуль забезпечує автоматизацію дилерів, управління замовленнями дилерів, експорт прайсу Бітрікс, права доступу дилерів та повноцінний кабінет партнера Бітрікс.
Строки
| Блок |
Строк |
| Архітектура модуля, ролі та контекст |
2-3 тижні |
| Управління замовленнями |
2-3 тижні |
| Документи та синхронізація з 1С |
2-4 тижні |
| Фінансовий блок |
1-2 тижні |
| Експорт прайсу |
1-2 тижні |
| Тестування |
2-3 тижні |
Разом: 10-17 тижнів. Основна змінна — складність інтеграції з 1С для документів та фінансів.
Ми даємо гарантію на модуль 12 місяців з моменту здачі. Замовте розробку модуля та отримайте консультацію з інтеграції з 1С — зв'яжіться з нами для оцінки вашого проєкту, ми підготуємо кошторис і строки індивідуально.
B2B-портали на 1С-Бітрікс
Наша спеціалізація — розробка B2B-порталів на 1С-Бітрікс. Не просто «інтернет-магазинів для оптовиків». Тут інший всесвіт: у кожного контрагента свій прайс, свій кредитний ліміт, свій набір документів і свій менеджер у Краснодарі. Роздрібний покупець обирає за картинкою та відгуками. Оптовик вбиває 50 артикулів у форму швидкого замовлення і чекає рахунок через 30 секунд.
У нас 10+ років досвіду в цій ніші, понад 50 проектів впровадження. Гарантія на роботи — 12 місяців. Сертифіковані спеціалісти 1С-Бітрікс. Зв'яжіться з нами — ми проаналізуємо вашу поточну структуру цін і запропонуємо архітектуру порталу під ваш бізнес.
Як влаштоване ціноутворення в B2B-порталі?
Якщо в роздробі одна ціна для всіх, то в B2B — матриця. Типи цін в b_catalog_price множаться на групи контрагентів, накопичувальні знижки, валютні перерахунки та договірні умови. Саме тут проект або злітає, або тоне в багах.
Типи цін і прайс-листи. У Бітрікс типи цін задаються через CCatalogGroup. Стандартний набір: роздрібна, дрібнооптова, оптова, дилерська, дистриб'юторська. Кожен контрагент прив'язаний до групи користувачів, група — до типу ціни. Але реальність складніша: один дилер може бачити оптові ціни на електроніку та дистриб'юторські на аксесуари. Це вже не штатний механізм — потрібна кастомна логіка через обробник OnSaleBasketItemBeforePriceSave.
Знижки — прогресивна шкала за обсягом (від 100 штук — мінус 5%, від 500 — мінус 12%), накопичувальні за період, сезонні, за категоріями. Знижки комбінуються через пріоритети в b_sale_discount. Порядок застосування — окремий головний біль: знижка може бути до або після фіксованої; пріоритети налаштовуються в «Правилах роботи з кошиком». При 20+ правилах налагодження перетворюється на квест.
Кредитні ліміти. Контрагенту встановлюється поріг відвантаження в кредит. Поточна заборгованість синхронізується з 1С через регістр РасчетыСКонтрагентами. Перевищення ліміту → блокування оформлення замовлення. Без цього менеджери відвантажують у борг, а бухгалтерія потім розгрібає дебіторку.
Договірні ціни — прайс прив'язаний до конкретного договору: терміни дії, номер, умови пролонгації. Договір закінчився — ціни перемикаються на базові автоматично. Реалізується через користувацькі властивості замовлення та обробник OnSaleComponentOrderProperties.
Валюта — для ЗЕД обов'язково. Перерахунок за курсом ЦБ (парсинг cbr.ru через CCurrencyRates::ConvertCurrency()) або фіксований курс контракту.
Що входить до дилерського кабінету?
Замовлення — повна історія з фільтрацією за статусами, датами, сумами. Повтор попереднього замовлення в один клік — для регулярних закупівель це економить години. Шаблони замовлень для типових позицій.
Фінанси — сальдо взаєморозрахунків, акт звірки, історія оплат. Все, що бухгалтер зазвичай запитує по email і чекає три дні — в кабінеті миттєво. Дані тягнуться з 1С через REST або CommerceML.
Документи — рахунки, накладні, рахунки-фактури, УПД, акти. Формуються в 1С, PDF пушиться на портал через інтеграцію. Завантаження одним кліком. Жодного «надішліть повторно, загубилося в пошті».
Управління співробітниками дилера — адміністратор створює обліковки з розмежуванням прав. Менеджер із закупівель формує замовлення, бухгалтер бачить лише фінанси, керівник — загальну картину. Реалізується через розширення стандартних груп користувачів Бітрікс.
Швидке замовлення: артикул + кількість = рахунок
B2B-клієнт знає, що йому потрібно. Каталог з красивими картками йому не потрібен — потрібна форма: артикул, кількість, наступний рядок.
- Форма швидкого замовлення — автопідстановка найменування та ціни при введенні артикула. Використовуємо AJAX-пошук по
b_iblock_element.XML_ID або PROPERTY_ARTICLE. 50 позицій за 3 хвилини
- Імпорт з Excel/CSV — клієнт вивантажив зі своєї системи, завантажив на портал. Автоспівставлення артикулів, перевірка наявності, формування замовлення. Парсинг через
PHPExcel або PhpSpreadsheet
- Кошик з повною інформацією — вага, об'єм, кількість місць, орієнтовна вартість доставки до оформлення
Чому інтеграція з 1С критична для B2B-порталу?
Без актуальних даних з 1С портал марний. Менеджер Іванов змінив ціну на цвяхи — через 15 хвилин дилер в Красноярську має бачити нову ціну.
| Дані |
Напрямок |
Механізм |
| Каталог, характеристики |
1С → Портал |
CommerceML або REST, 15–60 хв |
| Ціни за типами та контрагентами |
1С → Портал |
REST API, за подією або розкладом |
| Залишки по складах |
1С → Портал |
REST, 5–15 хв або realtime через HTTP-сервіс 1С |
| Замовлення |
Портал → 1С |
REST, реальний час |
| Статуси, відвантаження |
1С → Портал |
За подією |
| Взаєморозрахунки |
1С → Портал |
1–2 рази на день |
| Документи (PDF) |
1С → Портал |
За подією |
CommerceML простіше: штатний модуль обміну, XML-файли, мінімум налаштувань. Але він повільний на великих каталогах і не підтримує кастомні сутності (кредитні ліміти, сальдо). REST API через HTTP-сервіс 1С — гнучкіший, швидший, але потребує доопрацювання на стороні 1С. На практиці часто використовуємо гібрид: CommerceML для каталогу, REST для цін, залишків і документів. Згідно з офіційною документацією 1С-Бітрікс, для B2B-порталів критично налаштувати синхронізацію довідників та залишків у реальному часі. Детальніше про CommerceML та REST API 1С-Бітрікс.
ЕДО: юридично значущий обмін без паперу
Для великих B2B-проектів:
- Провайдери — Контур.Діадок, СБІС, Калуга Астрал. Рахунки-фактури, акти, накладні в електронному вигляді з юридичною силою
- КЕП — кваліфікований електронний підпис. Контрагент підписує акт прямо в кабінеті
- Роумінг між операторами — без цього половина партнерів, у яких інший оператор ЕДО, залишиться за бортом
Багатофілійність
- Регіональні склади — клієнт бачить залишки найближчого складу, може обрати склад відвантаження. Товар є в Новосибірську, але немає в Москві — портал покаже обидва варіанти з різними термінами
- Автоназначення менеджера — дилер з Краснодару працює з Іваном, з Єкатеринбурга — з Мариною. За полем
UF_REGION в картці контрагента
- Локальні умови — мінімальна сума замовлення, умови доставки, терміни — відрізняються за регіонами
Процес розробки B2B-порталів
Розробка B2B-порталів включає п'ять етапів. Нижче таблиця з орієнтовними термінами та результатами.
| Етап |
Термін |
Результат |
| Аудит процесів |
1–2 тижні |
Схема бізнес-процесів, карта інтеграцій |
| Проектування |
2–3 тижні |
Архітектура, прототипи, специфікація обміну з 1С |
| Розробка |
4–8 тижнів |
Кабінети, цінові механіки, інтеграції, документообіг |
| Тестування |
1–2 тижні |
Функціональне, інтеграційне, навантажувальне на реальних даних |
| Пілот |
2–3 тижні |
5–10 дилерів, зворотний зв'язок, доопрацювання |
Що входить в роботу:
- Повна проектна документація (ТЗ, архітектурна схема, протоколи інтеграції)
- Налаштування серверного оточення та розгортання (On-Premise або хмара)
- Перенесення всіх користувацьких даних та конфігурацій
- Навчання адміністраторів порталу (2 заняття онлайн)
- Гарантійна підтримка 12 місяців з реакцією до 4 годин
Після запуску — техпідтримка та розвиток. B2B-портал — жива система, яка еволюціонує разом з бізнесом.
Середня економія часу менеджера на обробці замовлень — до 20 годин на тиждень.
На старті перевірте коректність типів цін та груп користувачів, обмежте кількість знижкових правил (не більше 3–4), протестуйте інтеграцію з 1С на реальних даних, видайте дилерам доступи та проведіть навантажувальне тестування на 50 одночасних користувачів.
Замовте розробку B2B-порталу та отримайте консультацію спеціаліста. Зв'яжіться з нами для обговорення вашого проекту — ми підготуємо попередній розрахунок та запропонуємо оптимальне рішення.